I have a function and a few helper functions that are supposed to access Slack message history and return the first message that matches a certain number string.
I have tested the code extensively on my computer's Node.js environment to verify it works and is correct. However, I can't get it to work inside the run-time environment of Twilio Function; I keep getting the error "Missing name in function declaration.", and the function just won't chain properly or work like a function at all.
What am I doing wrong?
exports.handler = function(context, event, callback) {
if(event.event){
if(event.event.channel == context.CHANNEL_ID){
if(event.event.subtype){
console.log("bot posting");
if(event.event.thread_ts){
console.log("bot posting in thread");
console.log(event);
}
else{
console.log("bot posting in channel");
console.log(event);
}
}
else{
console.log("staff posting");
if(event.event.thread_ts){
console.log("staff posting in thread");
console.log(event);
}
else{
console.log("staff posting in channel");
console.log(event);
}
}
}
}
else{
console.log("incoming sms message");
console.log(typeof event.From);
}
returnTS("6049248010").then(function (ts) {
console.log(ts);
});
callback(null);
};
var getSlackHistory = async function (ts) {
try {
var response;
if (typeof ts === 'undefined') {
response = await got('https://slack.com/api/channels.history?'
+ 'token=' + context.TWILIO_TOKEN
+ '&channel=' + context.TWILIO_CHANNEL_ID);
}
else {
response = await got('https://slack.com/api/channels.history?'
+ 'token=' + context.TWILIO_TOKEN
+ '&channel=' + context.TWILIO_CHANNEL_ID
+ '&latest=' + ts);
}
return await JSON.parse(response.body);
}
catch (error) { console.log("failure"); }
}
var getAllSlackHistory = async function () {
var message_history = [];
try {
var response = await getSlackHistory();
// console.log(response.messages[response.messages.length - 1].ts);
for (var i = 0; i < response.messages.length; i++) {
message_history.push(response.messages[i]);
}
while (response.has_more) {
response = await getSlackHistory(response.messages[response.messages.length - 1].ts);
for (var i = 0; i < response.messages.length; i++) {
message_history.push(response.messages[i]);
}
}
return await message_history;
}
catch (error) {
console.log(error);
}
}
var returnTS = async function (numberString) {
try {
var message_history = await getAllSlackHistory();
//console.log(message_history.length);
// console.log(numberString);
for (var i = 0; i < message_history.length; i++) {
// console.log(message_history[i].text);
// console.log(message_history[i].text.includes(numberString));
if (message_history[i].text.includes(numberString))
// console.log(message_history[i].ts);
return message_history[i].ts;
}
}
catch (error) {
console.log(error);
}
}