I have created a Barista BOT. Further, I have set up the function in BOT to 'Log Incoming Text Messages in Google Sheets'. When I use my mobile number to send message to Twilio number to operate the BOT, I get all response from BOT and also storage of chosen drink in google sheet. But when I use some one else's mobile to send message to Twilio number, I get no response from BOT. When I check the 'Executions' under Logs for BOT, I see that the BOT is under execution. I stop it manually by pressing the 'Stop Execution' option. The Error logs under monitoring in Console gives
'Error - 81002'-
Message Unexpected event
Error Description An unexpected event was received while processing a widget. Studio ignored this event and did not transition to another widget because there was no matching transition available to handle the event. Note: If the Execution ended correctly, this warning can be ignored.
The function that I am using is as below -
const { google } = require('googleapis');
const fs = require('fs').promises;
const isAuthValid = (authJson) =>
authJson.client_email &&
authJson.client_email !== '<YOUR SERVICE ACCOUNT EMAIL ADDRESS>' &&
authJson.private_key &&
authJson.private_key !== '<YOUR PRIVATE KEY BLOCK HERE>';
exports.handler = async function (context, event, callback) {
//const twiml = new Twilio.twiml.MessagingResponse();
try {
const authJson = JSON.parse(
await fs.readFile(Runtime.getAssets()[context.GOOGLE_CREDENTIALS].path)
);
if (!isAuthValid(authJson)) {
throw new Error('Invalid authentication JSON file');
}
const auth = new google.auth.JWT({
email: authJson.client_email,
key: authJson.private_key,
scopes: ['https://www.googleapis.com/auth/spreadsheets'],
});
const sheets = google.sheets({
version: 'v4',
auth,
});
await sheets.spreadsheets.values.append({
spreadsheetId: context.DOCUMENT_ID,
range: `'${context.SHEET_NAME}'`,
valueInputOption: 'USER_ENTERED',
requestBody: {
values: [[event.messagesid, event.from, event.drink]],
},
});
//twiml.message('Thanks for your feedback! :)');
} catch (error) {
if (error.code === 404) {
console.error(
'Could not find your Google Sheets document. Please ensure DOCUMENT_ID is correct.'
);
} else if (
error.code === 400 &&
error.errors &&
error.errors[0] &&
error.errors[0].message
) {
console.error(
`Google sheets error: ${error.errors[0].message}. Please ensure SHEET_NAME is a valid spreadsheet inside your document.`
);
} else {
console.error(
`Google Sheets integration error: ${error.message || error}`
);
}
//twiml.message(
// 'Failed to save to Google Sheets. Please check the debugger in your Twilio console.'
//);
}
callback(null, 'success');
};
Please help me to resolve the issue. The BOT should be accessible to all the phone numbers.
Desired behaviour - The BOT should be accessible to all the phone numbers
A specific problem - When I use some one else's mobile to send message to Twilio number, I get no response from BOT
Shortest code necessary to reproduce the problem - as given in the code block above
Thanks in advance!!
Via Active questions tagged javascript - Stack Overflow https://ift.tt/1vJHAbk
Comments
Post a Comment