const express = require('express');
const app = express()
app.use(express.json());
var Airtable = require('airtable');
var base = new Airtable({apiKey: process.env.AIRTABLE_FOX_KEY}).base(process.env.PIZZA_BASE);
app.listen(3000, () => console.log('Example app listening on port 3000!'))
app.get('/', (req, res) => {
var resp = '';
let responseJson ={} ;
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
let test = '16';
base('pizza').select({
maxRecords: 5,
filterByFormula: `({Price 32}="${test}")`,
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved',record.get('Name'));
resp+=record.get('Name');
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
})
app.post('/', function (req, res) {
let action = req.body.queryResult.action;
let responseJson = {};
if (action === 'pizzalook') {
let namepizza = req.body.queryResult.parameters.namepizza;
namepizza = namepizza.trim();
var request = require("request");
let responseJson = {};
base('pizza').select({
maxRecords: 1,
filterByFormula: `({Name}="${namepizza}")`,
}).firstPage(function(err, records){
if (err) { console.error(err); return; }
let items = [];
records.forEach(function(record) {
items.push(
{
"payload": {
"telegram": {
"text":'*Название :*'+record.get('Name')+'*\nОписание :*'+record.get('description')+'\n[Фото]'+'('+record.get('photo')+')',
"parse_mode": "Markdown",
"reply_markup": {
"inline_keyboard":
[
[
{
"text": '32 см.-' +record.get('Price 32')+'руб.',
"callback_data": "0"
},
{
"text": "Добавить в корзину",
"callback_data":"32"
},
],
[
{
"text": '43 см.-' +record.get('Price 43')+'руб.',
"callback_data": "0"
},
{
"text": "Добавить в корзину",
"callback_data":"43"
},
]
]
}
}
}
,
"type":4,
"platform": "TELEGRAM"
}
);
});
if(items.length){
responseJson.fulfillmentMessages = items;
}
else{
responseJson.fulfillmentMessages = 'Items not found';
}
res.json(responseJson);
});
}
else if(action === 'pizzalook.pizzalook-cancel.pizzalook-cancel-selectnumber') {
let contexts = req.body.queryResult.outputContexts;
console.log(contexts);
var item = contexts.find(item => item.name.endsWith('/pizzalook-followup'));
var nameorig = item.parameters.namepizza;
var diameter = item.parameters.diameter;
var cc=req.body.queryResult.parameters.number;
var id=req.body.originalDetectIntentRequest.payload.callback_query.message.chat.id;
base('order').create([
{
"fields": {
"ID": +id,
"Pizzas": ''+nameorig+'' ,
"Diam": ''+diameter+'',
"PP":+cc
}}],
function(err, records) {
if (err) {
console.error(err);
responseJson.fulfillmentText = err;
res.json(responseJson);
//return;
}
records.forEach(function (record) {
console.log(record.getId());
});
let responseJson = {};
responseJson.fulfillmentText ='Вы выбрали пиццу :'+nameorig +' диаметром: '+diameter +'см. в количестве '+cc +'шт';
res.json(responseJson)
});
}
else if(action === 'Order.Order-later.Order-later-later.Order-later-later-later') {
let contexts = req.body.queryResult.outputContexts;
console.log(contexts);
var item = contexts.find(item => item.name.endsWith('/order-later-later-followup'));
var address = item.parameters.address;
var id=req.body.originalDetectIntentRequest.payload.chat.id;
var phone=req.body.originalDetectIntentRequest.payload.text;
var fn=req.body.originalDetectIntentRequest.payload.from.first_name;
base('client').create([
{
"fields": {
"ID": +id,
"phone": ''+phone+'',
"Name_first":''+fn+'',
"address":''+address+''
}}],
function(err, records) {
if (err) {
console.error(err);
responseJson.fulfillmentText = err;
res.json(responseJson);
//return;
}
records.forEach(function (record) {
console.log(record.getId());
});
let responseJson = {};
responseJson.fulfillmentText ='Спасибо , ваш заказ сформирован ';
res.json(responseJson)
});
}
else if(action == 'test') {
let xxx= [{"payload": {
"telegram": "getMe",
"type":4,
"platform": "TELEGRAM"
}}];
responseJson.fulfillmentMessages = xxx;
res.json(responseJson)
}
});