При подключенном в проекте workflow Slack notifications не собирается почта и не создаются заявки

Answered

Добрый день, настроил YT по Use YouTrack as a Help Desk  почта собирается, заявки создаются. Подключил slack notifications, создал канал, вебхук и т.д., добавил хук в процесс, после этого почта перестает обрабатываться, в консоли процесса такая ошибка каждый раз при сборе почты. При заборе почты: пишет "Ошибка получения почтовых сообщений", помогите пожалуйста разобраться что не так?

 Ошибки в консоли процесса Slack notifications:

Processing issue SD-8139: TypeError: Cannot read property "name" from null (@jetbrains/youtrack-workflow-slack-notifications-simple/send-to-slack#44)
            org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4198)

org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4176)

org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:4209)

org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:4228)

org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:4240)

org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1570)

org.mozilla.javascript.gen._jetbrains_youtrack_workflow_slack_notifications_simple_send_to_slack_1898._c_anonymous_2(@jetbrains/youtrack-workflow-slack-notifications-simple/send-to-slack:44)

org.mozilla.javascript.gen._jetbrains_youtrack_workflow_slack_notifications_simple_send_to_slack_1898.call(@jetbrains/youtrack-workflow-slack-notifications-simple/send-to-slack)

org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)

org.mozilla.javascript.gen._execution_ctx__1913._c_anonymous_6(_execution_ctx_:88)

org.mozilla.javascript.gen._execution_ctx__1913.call(_execution_ctx_)

org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:405)

org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3508)

org.mozilla.javascript.gen._execution_ctx__1913.call(_execution_ctx_)


5 comments
Comment actions Permalink
Official comment

Здравствуйте,

Прошу прощения за задержку с ответом - у нас возникла техническая проблема на форуме.

Скажите, пожалуйста, Вы редактировали каким-то образом стандартный воркфлоу? Вероятнее всего, проблема в том, что на этапе срабатывания правила у Вас поле State или Priority еще пустые, поэтому при попытке прочитать их имя появляется ошибка.
В таком случае, решить проблему можно либо исправлением условия срабатывания правила (нужно проверять там, что эти поля уже указаны), либо исправлением payload-переменной - записывать в нее значения полей State и Priority только в случае, если они не пустые.

Буду рада помочь, если у Вас остались вопросы. 

Comment actions Permalink

Добрый день, спасибо за ответ.

Да, возможно были изменения в стандартном воркфлоу, либо в полях, я занялся уже когда процесс был подключен в проект, что меняли сказать не могут.  Ошибку выше удалось обойти удалением name в строках:

{
"title": "State",
"value": issue.fields.State.name,
"short": true
},
{
"title": "Priority",
"value": issue.fields.Priority.name,
"short": true
}

после удаления сообщения начали приходить в слэк, но в большинстве случаев в сообщении, в слэке, поля State и Priority пусты, здесь я не совсем понимаю что такое name, это получается значение поля?

Сейчас в начале изучения api,  потому вопросы наверное кажутся дилетантскими, если можно ответе еще на один вопрос здесь:

добавил в процесс часть кода:

guard: function(ctx) {
return ctx.issue.becomesReported || ctx.issue.becomesResolved || ctx.issue.becomesUnresolved || ctx.issue.comments.added.isNotEmpty();
},
action: function(ctx) {
var issue = ctx.issue;
var text = issue.comments.added.isNotEmpty().text;

...

} else if (issue.comments.added.isNotEmpty()) {
message = "Commented: ";
isNew = false;
}

...

{
"title": "Comments",
"value": text,
"short": true
}

Ожидал, что текст комментария появится в сообщении, но титул появляется, а сам текст нет, в чем я ошибаюсь?

0
Comment actions Permalink

Добрый день,

name - это проперти объекта. Name имеет тип "строка" и содержит в себе имя значения в строковое представлении. Например, если у Вас в поле State выбрано значение Open, то на самом деле это не только строка Open, а большой объект класса State, у которого есть различные атрибуты, в том числе и имя (name) - "Open". Чтобы получить именно строку, содержащую название значения, небоходимо использовать `.name`. 

Чтобы обойти проблему, о которой Вы писали в первом сообщении, проверяйте, что поле выставлено, следующим способом: 

{
"title": "State",
"value": issue.fields.State ? issue.fields.State.name : '',
"short": true
},

Касательно Вашего вопроса про комментарии:
1.issue.comments.added.isNotEmpty() - это булево значение (true или false). Это метод стоит использовать, чтобы понять, были ли добавлены комментарии к задаче в текущей транзакции.
2. Если комментарии были добавлены, то к ним можно получить доступ, итерируясь по сету issue.comments.added, например, с помощью forEach(). Тогда в каждой итерации Вы будете обрабатывать один объект комментария, у которого уже можно получить проперти text. 
Вот пример, который выводит текст каждого комментария в консоль редактора:

ctx.issue.comments.added.forEach(function(comment) { 
console.log(comment.text);
}); 

Надеюсь, это поможет.

0
Comment actions Permalink

Добрый день,  оба ответа в точку, процесс заработал как надо, спасибо!

0
Comment actions Permalink

Спасибо за апдейт, хорошего дня!

0

Please sign in to leave a comment.