Цель
Моя компания использует платформу экстрасети, которая позволяет клиентам публиковать "идеи" для улучшения продукта.Мы хотели бы публиковать уведомления об этих идеях в Slack.Платформа экстранет не предлагает веб-крючок для идей.Он действительно предлагает API идей.Однако он не предлагает способ запроса идей, созданных до, после или между двумя временными метками.API идей возвращает дату создания идеи в виде временной метки: 2018-11-13T02:03:31.583
.Он также возвращает имя автора, который опубликовал идею, и текст идеи.
Лучшее решение, которое я могу придумать, - это использовать приложение Azure Logic, которое:
- Опрашивает API идей для последнего X количества идей один раз в день
- Для каждой идеи передает дату создания, автора и текстовые поля возвращенного объекта JSON в функцию Azure (код приведен ниже)
- Функция Azure сравнивает поле даты создания с сегодняшней датой
- Если даты совпадают, функция Azure отправляет текстовое и авторское поля обратно в приложение логики Azure для отправки в Slack
- Если даты не совпадают, функция Azure ничего не делает
Код
Ввод
(я оставил метаданные другой идеи в JSON, например, автораи текст, чтобы упростить мой вопрос)
{
"date": "2018-12-12T17:34:07.693"
}
Функция Azure index.js
module.exports = function (context, data) {
var ideaDate = data.body;
var ideaDate2 = JSON.stringify(ideaDate);
var ideaDate3 = JSON.parse(ideaDate2);
var ideaDate4 = ideaDate3.date;
// Extract date only
var ideaDate5 = ideaDate4.substring(0, 10);
// Get today's date
var todaysDate = new Date();
var localDate = new Date(todaysDate);
var localDate1 = localDate.toISOString().toString()
// Extract date only
var localDate2 = localDate1.substring(0, 10);
///PROBLEMATIC LINE
if (new String(ideaDate5).valueOf() === new String(localDate2).valueOf()) {
// Response of the function to be used later
context.res = {
body: {
ideaDate,
ideaDate2,
ideaDate3,
ideaDate4,
ideaDate5,
todaysDate,
localDate,
localDate1,
localDate2
}
};
}
context.done();
};
Вывод
500: Internal Service Error
Вывод, который успешно без проблем, еслистрока заявления
Я нахожусь ввключая все переменные в выводе, чтобы продемонстрировать, что происходит во время работы скрипта.
{
"ideaDate": {
"date": "2018-12-12T17:34:07.693"
},
"ideaDate2": "{\"date\":\"2018-12-12T17:34:07.693\"}",
"ideaDate3": {
"date": "2018-12-12T17:34:07.693"
},
"ideaDate4": "2018-12-12T17:34:07.693",
"ideaDate5": "2018-12-12",
"todaysDate": "2018-12-12T23:51:26.110Z",
"localDate": "2018-12-12T23:51:26.110Z",
"localDate1": "2018-12-12T23:51:26.110Z",
"localDate2": "2018-12-12"
}
Я новичок в JavaScript
Спасибо за любые советы, которые обнаруживают проблему или рекомендуют лучший процесс полностью.
Редактировать
Спасибо ABOS за указание на то, что в операторе if
должны быть круглые скобки.Я добавил их в коде, напечатанном выше.Функция Azure больше не возвращает ошибку.Однако он не возвращает поля JSON в выходных данных.
Но я очень рад быть на шаг ближе.
Редактировать 2
function.json в AzureФункция:
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}