Skip to content

Instantly share code, notes, and snippets.

@adrianhajdin
Created August 4, 2020 09:56
Show Gist options
  • Star 67 You must be signed in to star a gist
  • Fork 16 You must be signed in to fork a gist
  • Save adrianhajdin/bab49eac7dcf9c095fce37ae1167dd87 to your computer and use it in GitHub Desktop.
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: []})
})
@arpita-24
Copy link

{headers: {"user-agent": 'user agent' }}

This worked. Thanks

@zafair122
Copy link

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

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

@carlyjames
Copy link

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

@SushantKawale
Copy link

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

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

// 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

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

can you please share the code for categories

@ayush9009
Copy link

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

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
Copy link

ayush9009 commented Nov 20, 2022 via email

@Kajal-Abacus
Copy link

anyone please give fully working code .

@HackX-IN
Copy link

Thank You All Guys For Helping Me Out With This !

@Indradeep-Pal
Copy link

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

still facing same undefined error

@Mudassir55
Copy link

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

can anyone share fully functional code

@yaninyzwitty
Copy link

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

this is great!!

@anshika42
Copy link

thanks this is working

@Aanya9693
Copy link

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

@moabz49
Copy link

moabz49 commented Aug 18, 2023

mohitksoni

@mohitksoni thanks friend

@GoutamSachdev
Copy link

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

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

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

@ilija-mihajlovic
Copy link

ilija-mihajlovic commented Aug 31, 2023

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

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
Copy link

nuelheran commented Sep 16, 2023

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

@Sheri78
Copy link

Sheri78 commented Dec 26, 2023

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.

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