Оформлена подписка Xsi-event через PUT запрос в API АТС Билайн. В параметре URL был указан адрес, который принимает POST запросы. Сервер на NodeJs(Express). Когда происходят звонки, подписка отправляет пустое тело запроса. Как получать информацию о звонке? Или как разобрать тот запрос, что она присылает.
Пустым тело запроса было, потому что ответ приходил потоком. Формировать данные нужно было посло того, как заканчивается поток. В среде NodeJs + Express это выглядит так
app.post('/path/to/api', (request, response)=>{
response.status(200); // ответ должен быть обязательно со статусом 200
let body = '';
request.on('data', (chunk) => {
body += chunk;
});
request.on('end', () => {
response.write('OK');
response.end();
});
})
Проблема для среды NodeJS и программирования на Js заключается в том, что ответ приходит в формате XML. Для удобной обработки информации, можно использовать конвертер в json формат. Дополнив код, получим следующее:
app.post('/api/beeline/subscription', (request, response)=>{
console.log(request.method, request.url, request.headers);
console.log("------------------------------");
response.status(200);
let body = '';
request.on('data', (chunk) => {
body += chunk;
});
request.on('end', () => {
let option = {
elementNameFn: function(val) {return val.replace('xsi:','');},
compact: true,
spaces: 4,
ignoreInstruction:true,
ignoreDeclaration: true,
ignoreAttributes: true,
ignoreCdata:true,
instructionHasAttributes: true,
textKey: 'text'
}
let body_JSON = convert.xml2json(body, option);
response.write('OK');
response.send();
});
})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется база данных indexeddb внутри браузераКак задать ей изначальные значения? Например пользователь заходит в первый раз, значения по умолчанию...
при выборе select скрипт постоянно добавляет параметр, как его раз добавить и при следующих изменениях просто менять?