untitled notebook

node v10.24.1
version: 601.0.0
endpointsharetweet
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) } });
Loading…

no comments

    sign in to comment