Skip to content

Instantly share code, notes, and snippets.

@adrianhajdin
Created August 4, 2020 09:56
Show Gist options
  • Select an option

  • Save adrianhajdin/bab49eac7dcf9c095fce37ae1167dd87 to your computer and use it in GitHub Desktop.

Select an option

Save adrianhajdin/bab49eac7dcf9c095fce37ae1167dd87 to your computer and use it in GitHub Desktop.
Alan Studio Code Materials
intent('What does this app do?', 'What can I do here?',
reply('This is a news project.'));
const API_KEY = '7bdfb1b10aca41c6becea47611b7c35a';
let savedArticles = [];
// News by Source
intent('Give me the news from $(source* (.*))', (p) => {
let NEWS_API_URL = `https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}`;
if(p.source.value) {
NEWS_API_URL = `${NEWS_API_URL}&sources=${p.source.value.toLowerCase().split(" ").join('-')}`
}
api.request(NEWS_API_URL, (error, response, body) => {
const { articles } = JSON.parse(body);
if(!articles.length) {
p.play('Sorry, please try searching for news from a different source');
return;
}
savedArticles = articles;
p.play({ command: 'newHeadlines', articles });
p.play(`Here are the (latest|recent) ${p.source.value}.`);
p.play('Would you like me to read the headlines?');
p.then(confirmation);
});
})
// News by Term
intent('what\'s up with $(term* (.*))', (p) => {
let NEWS_API_URL = `https://newsapi.org/v2/everything?apiKey=${API_KEY}`;
if(p.term.value) {
NEWS_API_URL = `${NEWS_API_URL}&q=${p.term.value}`
}
api.request(NEWS_API_URL, (error, response, body) => {
const { articles } = JSON.parse(body);
if(!articles.length) {
p.play('Sorry, please try searching for something else.');
return;
}
savedArticles = articles;
p.play({ command: 'newHeadlines', articles });
p.play(`Here are the (latest|recent) articles on ${p.term.value}.`);
p.play('Would you like me to read the headlines?');
p.then(confirmation);
});
})
// News by Categories
const CATEGORIES = ['business', 'entertainment', 'general', 'health', 'science', 'sports', 'technology'];
const CATEGORIES_INTENT = `${CATEGORIES.map((category) => `${category}~${category}`).join('|')}|`;
intent(`(show|what is|tell me|what's|what are|what're|read) (the|) (recent|latest|) $(N news|headlines) (in|about|on|) $(C~ ${CATEGORIES_INTENT})`,
`(read|show|get|bring me|give me) (the|) (recent|latest) $(C~ ${CATEGORIES_INTENT}) $(N news|headlines)`, (p) => {
let NEWS_API_URL = `https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=us`;
if(p.C.value) {
NEWS_API_URL = `${NEWS_API_URL}&category=${p.C.value}`
}
api.request(NEWS_API_URL, (error, response, body) => {
const { articles } = JSON.parse(body);
if(!articles.length) {
p.play('Sorry, please try searching for a different category.');
return;
}
savedArticles = articles;
p.play({ command: 'newHeadlines', articles });
if(p.C.value) {
p.play(`Here are the (latest|recent) articles on ${p.C.value}.`);
} else {
p.play(`Here are the (latest|recent) news`);
}
p.play('Would you like me to read the headlines?');
p.then(confirmation);
});
});
const confirmation = context(() => {
intent('yes', async (p) => {
for(let i = 0; i < savedArticles.length; i++){
p.play({ command: 'highlight', article: savedArticles[i]});
p.play(`${savedArticles[i].title}`);
}
})
intent('no', (p) => {
p.play('Sure, sounds good to me.')
})
})
intent('open (the|) (article|) (number|) $(number* (.*))', (p) => {
if(p.number.value) {
p.play({ command:'open', number: p.number.value, articles: savedArticles})
}
})
intent('(go|) back', (p) => {
p.play('Sure, going back');
p.play({ command: 'newHeadlines', articles: []})
})
@zafair122

Copy link
Copy Markdown

why my newscard not showing on screen and also its give me these errors? any solution? erro2

is your issue resolved? same problem with me

i was getting the same problems and what did come to my mind was that our source is not working to get the data i think soooo

@SushantKawale

Copy link
Copy Markdown

I am able oh hear the news but the news are not displaying on screen What should I do?

@carlyjames

Copy link
Copy Markdown

hello guys,am having issues getting the latest news 😭😭
latest news error

@SushantKawale

Copy link
Copy Markdown

Try this code
// Use this sample to create your own voice commands
intent('What does this app do?','What can I do here?',
reply('This is a news project'))
//intent('Start a command',(p) =>{
//p.play({command:'testCommand'})
//})

const API_KEY='4d90c24ea6f44bf780ab37656e458b79';
let savedArticles = [];
//News By Source

intent('Give me the news from $(source* (.*))',(p) => {

let NEWS_API_URL = 'https://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=4d90c24ea6f44bf780ab37656e458b79';

if(p.source.value) {
    NEWS_API_URL = `${NEWS_API_URL}&sources=${p.source.value.toLowerCase().split(" ").join('-')}`
}

api.axios.get(NEWS_API_URL).then((response)=>{
    let {articles} = response.data;
    if(!articles.length){
        p.play('Sorry, please try searching for news from a different source');
        return;
    }
    savedArticles = articles;
    p.play({command: 'newsHeadlines', articles});
    p.play(`Here are the (latest|recent) ${p.source.value}`);
    
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
})
});

// News by Term
intent('give information about $(term* (.*))', (p) => {
let NEWS_API_URL = https://newsapi.org/v2/everything?apiKey=${API_KEY};

if(p.term.value) {
    NEWS_API_URL = `${NEWS_API_URL}&q=${p.term.value}`
}

api.axios.get(NEWS_API_URL).then((response)=>{
    let {articles} = response.data;
    
    if(!articles.length) {
        p.play('Sorry, please try searching for something else.');
        return;
    }
    
    savedArticles = articles;
    
    p.play({ command: 'newsHeadlines', articles });
    p.play(`Here are the (latest|recent) articles on ${p.term.value}.`);
    
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
});

})

// News by Categories
const CATEGORIES = ['business', 'entertainment', 'general', 'health', 'science', 'sports', 'technology'];
const CATEGORIES_INTENT = ${CATEGORIES.map((category) => ${category}~${category}).join('|')};

intent((show|what is|tell me|what's|what are|what're|read) (the|) (recent|latest|) $(N news|headlines) (in|about|on|) $(C~ ${CATEGORIES_INTENT}),
(read|show|get|bring me|give me) (the|) (recent|latest) $(C~ ${CATEGORIES_INTENT}) $(N news|headlines), (p) => {
let NEWS_API_URL = https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=us;

if(p.C.value) {
    NEWS_API_URL = `${NEWS_API_URL}&category=${p.C.value}`
}

api.axios.get(NEWS_API_URL).then((response)=>{
    let {articles} = response.data;
    
    if(!articles.length) {
        p.play('Sorry, please try searching for a different category.');
        return;
    }
    
    savedArticles = articles;
    
    p.play({ command: 'newsHeadlines', articles });
    
    if(p.C.value) {
        p.play(`Here are the (latest|recent) articles on ${p.C.value}.`);        
    } else {
        p.play(`Here are the (latest|recent) news`);   
    }
    
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
});

});

const confirmation = context(() => {
intent('yes', async (p) => {
for(let i = 0; i < savedArticles.length; i++){
p.play({ command: 'highlight', article: savedArticles[i]});
p.play(${savedArticles[i].title});
}
})

intent('no', (p) => {
    p.play('Sure, sounds good to me.')
})

})

intent('open (the|) (article|) (number|) $(number* (.*))', (p) => {
if(p.number.value) {
p.play({ command:'open', number: p.number.value, articles: savedArticles})
}
})

intent('(go|) back', (p) => {
p.play('Sure, going back');
p.play({ command: 'newsHeadlines', articles: []})
})

@Fazman-s

Copy link
Copy Markdown

hello guys,am having issues getting the latest news 😭😭 latest news error

use this code!!!
//latest news
intent('(give |show |tell) me the latest news', (p) => {
let NEWS_API_URL = https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=in;

if(p) {
    NEWS_API_URL = `${NEWS_API_URL}`;
}

api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => {
const { articles } = JSON.parse(body);
   
    savedArticles = articles;
    
    p.play({ command: 'newHeadlines', articles });
    p.play(`Here are the (latest|recent) articles `);
    
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
});

})

@ayush9009

Copy link
Copy Markdown

// News by Categories
const CATEGORIES = ['business', 'entertainment', 'general', 'health', 'science', 'sports', 'technology'];
const CATEGORIES_INTENT = ${CATEGORIES.map((category) => {category}).join('|')};

intent((show|what is|tell me|what's|what are|what're|read) (the|) (recent|latest|) $(N news|headlines) (in|about|on|) $(C~ ${CATEGORIES_INTENT})
(read|show|get|bring me|give me) (the|) (recent|latest) $(C~ ${CATEGORIES_INTENT}) $(N news|headlines), (p) => {
let NEWS_API_URL = https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=us;

if(p.C.value) {
NEWS_API_URL = ${NEWS_API_URL}&category=${p.C.value}
}

api.axios.get(NEWS_API_URL).then((response)=>{
let {articles} = response.data;

if(!articles.length) {
    p.play('Sorry, please try searching for a different category.');
    return;
}

savedArticles = articles;

p.play({ command: 'newsHeadlines', articles });

if(p.C.value) {
    p.play(`Here are the (latest|recent) articles on ${p.C.value}.`);        
} else {
    p.play(`Here are the (latest|recent) news`);   
}

p.play('Would you like me to read the headlines?');
p.then(confirmation);

});

///i dont get the news from categories ,please anyone help me,i try to resolve it from 5 days but still not able to solve it

@ayush9009

Copy link
Copy Markdown

${CATEGORIES.map((category) => category {category}).join('|')}

can you please share the code for categories

@ayush9009

Copy link
Copy Markdown

hello guys,am having issues getting the latest news 😭😭 latest news error

use this code!!! //latest news intent('(give |show |tell) me the latest news', (p) => { let NEWS_API_URL = https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=in;

if(p) {
    NEWS_API_URL = `${NEWS_API_URL}`;
}

api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => {
const { articles } = JSON.parse(body);
   
    savedArticles = articles;
    
    p.play({ command: 'newHeadlines', articles });
    p.play(`Here are the (latest|recent) articles `);
    
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
});

})

brother can you please share your code for categories section,because i tried lot but still not able to get the different categories news,when i search give me the latest technology news it responds me ,please try searching news from different source
PLEASE HELP

@Fazman-s

Copy link
Copy Markdown

hello guys,am having issues getting the latest news 😭😭 latest news error

use this code!!! //latest news intent('(give |show |tell) me the latest news', (p) => { let NEWS_API_URL = https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=in;

if(p) {
    NEWS_API_URL = `${NEWS_API_URL}`;
}

api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => {
const { articles } = JSON.parse(body);
   
    savedArticles = articles;
    
    p.play({ command: 'newHeadlines', articles });
    p.play(`Here are the (latest|recent) articles `);
    
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
});

})

brother can you please share your code for categories section,because i tried lot but still not able to get the different categories news,when i search give me the latest technology news it responds me ,please try searching news from different source PLEASE HELP

const CATEGORIES = ['business', 'entertainment', 'general', 'health', 'science', 'sports', 'technology'];
const CATEGORIES_INTENT = ${CATEGORIES.map((category) => ${category}~${category}).join('|')}$;

intent((show|what is|tell me|what's|what are|read) (the|) (recent|latest|) $(N news|headlines) (in|about|on|) $(C~ ${CATEGORIES_INTENT}),
(read|show|get|bring me|give me) (the|) (recent|latest) $(C~ ${CATEGORIES_INTENT}) $(N news|headlines), (p) => {

let NEWS_API_URL = `https://newsapi.org/v2/top-headlines?apiKey=${API_KEY}&country=in`;

if(p.C.value) {
    NEWS_API_URL = `${NEWS_API_URL}&category=${p.C.value}`
}

api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => {
const { totalResults, articles } = JSON.parse(body);

    if(!articles.length) {
        p.play('Sorry, please try searching for a different category.');
        return;
    }
    
    savedArticles = articles;
    
    p.play({ command: 'newHeadlines', articles });
    
    if(p.C.value){
        p.play(`Here are the (latest|recent) articles on ${p.C.value}.`);
    }
    p.play('Would you like me to read the headlines?');
    p.then(confirmation);
    
});

})

@ayush9009

ayush9009 commented Nov 20, 2022 via email

Copy link
Copy Markdown

@Kajal-Abacus

Copy link
Copy Markdown

anyone please give fully working code .

@HackX-IN

Copy link
Copy Markdown

Thank You All Guys For Helping Me Out With This !

@Indradeep-Pal

Copy link
Copy Markdown

why is it not fetching any data from news api . I copied code fromone of these comments and it worked but when i console.log(articles ) it is showing undefined. Any help from peers would be appreciated .

@Mudassir55

Copy link
Copy Markdown

still facing same undefined error

@Mudassir55

Copy link
Copy Markdown

why is it not fetching any data from news api . I copied code from one of these comments and it worked but when i console.log(articles ) it is showing undefined. Any help from peers would be appreciated .

facing same issue when use conssole.log they data type is undefined

@Mudassir55

Copy link
Copy Markdown

can anyone share fully functional code

@yaninyzwitty

Copy link
Copy Markdown

I have spend 2 days on this problem and just found the solution and get news data, Just give replace this code and your all problems will be solved Inshallah

api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => { const {articles} = JSON.parse(body);

    if(!data.length) {
       p.play('Sorry, please try searching for news from a different source');
        return;
    }
     savedArticles = articles;

        p.play({ command: 'newHeadlines', articles});
        p.play(`Here are the (latest|recent) ${p.source.value}.`);
});

@yaninyzwitty

Copy link
Copy Markdown

this is great!!

@anshika42

Copy link
Copy Markdown

thanks this is working

@aanya963

Copy link
Copy Markdown

@anshika42 Can you please send the complete code please? it's not working for me, I tried a lot of times.

@moabz49

moabz49 commented Aug 18, 2023

Copy link
Copy Markdown

mohitksoni

@mohitksoni thanks friend

@GoutamSachdev

Copy link
Copy Markdown

Use this

api.axios.get(NEWS_API_URL).then((response)=>{
let {articles} = response.data;
instead of this>>
api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => {
const { articles } = JSON.parse(body);

@GoutamSachdev

Copy link
Copy Markdown

Use this

api.axios.get(NEWS_API_URL).then((response)=>{
let {articles} = response.data;

instead of this>>
api.request(NEWS_API_URL, {headers: {"user-agent": 'user agent' }}, (error, response, body) => {
const { articles } = JSON.parse(body);

@Satwik1900

Copy link
Copy Markdown

@GoutamSachdev Could you provide the full code please. I am getting stuck repeatedly.

@ilija-mihajlovic

ilija-mihajlovic commented Aug 31, 2023

Copy link
Copy Markdown

Here is the fully working code. The only thing I changed is one intent from "Give me the latest news" to "Show me the latest news", don't forget to change that in the front end. The previous code did not work because the newsapi changed their endpoints.

Here is the link to repository where the code is https://github.com/ilija-mihajlovic/alan-ai-working-code

@otabek0302

Copy link
Copy Markdown

If request is not working try with axios or read document from Alan AI.
There some example from Alan AI with axios :

const SERVICE_URL = "http://api.openweathermap.org/data/2.5/weather";
const appid = "4acdb6432d18884ebc890c13a9c3cc85";

intent('What is the weather in $(LOC)', p => {
const request_url = ${SERVICE_URL}?appid=${appid}&q=${p.LOC}&units=imperial;
api.request(request_url, (error, res, body) => {
if (error || res && res.statusCode !== 200) {
p.play('Could not get weather information');
} else {
let data = JSON.parse(body);
console.log({data});
p.play(The temperature in ${p.LOC} is ${Math.floor(data.main.temp)} degrees in Fahrenheit);
}
});
});

@nuelheran

nuelheran commented Sep 16, 2023

Copy link
Copy Markdown

I want to direct the news on my project to national news in my country (Indonesia), but why can't my program capture images related to the news? does anyone know how to fix this?
ask question

@zafair122

zafair122 commented Oct 1, 2023 via email

Copy link
Copy Markdown

@Sheri78

Sheri78 commented Dec 26, 2023

Copy link
Copy Markdown

Here is the fully working code. The only thing I changed is one intent from "Give me the latest news" to "Show me the latest news", don't forget to change that in the front end. The previous code did not work because the newsapi changed their endpoints.

Here is the link to repository where the code is https://github.com/ilija-mihajlovic/alan-ai-working-code

thanks this is working.but still have some issues.

@Ritiksharmaji

Copy link
Copy Markdown

hi Guys when i try that promo code then it comes as Promo code not found coded is JSMASTERY
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment