Automation for Jira - Jira フィールドのコンテンツを使用して Confluence ページを作成するように設定されたルールがエラー 500 で失敗する

プラットフォームについて: Data Center のみ。 - この記事は、 Data Center プラットフォーム

この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。

*Fisheye および Crucible は除く

要約

Jira 自動化ルールから Confluence ページを作成するには、「Confluence ページを作成するルールを設定する」の記事で説明している手順に従います。この自動化ルールは、Web リクエストをリクエスト本文の JSON ペイロードとともに Confluence に送信する操作で構成されます。

このプロセスでは、Jira テキスト フィールドを使用して以下の方法で Confluence ページのタイトルまたは説明を設定することもできます。

1 2 3 4 5 6 7 { "type":"page", "title":"{{Test Page Title}}", "space":{"key":"Test"}, "body":{"storage":{"value":"{{issue.description.html}}", "representation":"storage"}} }

説明などの Jira フィールドにはテキストの書式設定や改行が含まれている場合があることにご注意ください。これらの要素は、ページ作成の妨げになるか、またはコンテンツのコピー時に誤った書式設定が発生する原因になる可能性があります。したがって、課題の説明のようなフィールドをコピーするには、{{issue.description.html}} または {{issue.description.htmlencode}} を使用して wiki マークアップを HTML に変換するだけでは不十分である可能性があります。

このナレッジ ベース記事では、自動化ルールによって送信されたリクエストが以下のスクリーンショットに示すエラーで失敗する理由と、その修正方法について説明します。

自動化監査ログのエラー

ソリューション

原因:

(以下の例のように) 自動化ルールによって Confluence に送信される JSON ペイロードに {{issue.description.html}} または {{issue.description.htmlencode}} を使用すると、適切なエスケープ文字なしで JSON ペイロードが生成されることがあります。

1 2 3 4 5 6 7 { "type":"page", "title":"{{Test Page Title}}", "space":{"key":"Test"}, "body":{"storage":{"value":"{{issue.description.html}}", "representation":"storage"}} }

この不正な JSON ペイロードにより、自動化ルールの監査ログにエラー 500 が記録される可能性があります。

この背後にある理由は、Confluence が JSON ペイロードの不正な形式をサポートしていないことにあり、その結果として Confluence ログに例外が記録されます。

  • 例外の例 1

1 2 3 4 5 6 7 8 9 10 11 2023-11-15 17:16:52,503 ERROR [http-nio-8090-exec-9 url: /confluence/rest/api/content/; user: admin] [rest.api.model.ExceptionConverter] convertServiceException No status code found for exception, converting to internal server error : -- url: /confluence/rest/api/content/ | userName: admin | traceId: 0df3424bb529b26d org.codehaus.jackson.JsonParseException: Unexpected character ('t' (code 116)): was expecting comma to separate OBJECT entries at [Source: com.atlassian.confluence.plugins.restapi.filters.LimitingRequestFilter$1@3acd0585; line: 5, column: 43] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:442) at org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:482) at org.codehaus.jackson.map.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:192) at org.codehaus.jackson.map.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:197) at org.codehaus.jackson.map.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:197)
  • 例外の例 2

1 2 3 4 5 6 7 8 9 10 2023-11-15 17:17:35,316 ERROR [http-nio-8090-exec-10 url: /confluence/rest/api/content/; user: admin] [rest.api.model.ExceptionConverter] convertServiceException No status code found for exception, converting to internal server error : -- url: /confluence/rest/api/content/ | userName: admin | traceId: 8e90c890b5397d8d org.codehaus.jackson.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value at [Source: com.atlassian.confluence.plugins.restapi.filters.LimitingRequestFilter$1@6e450ee3; line: 5, column: 55] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521) at org.codehaus.jackson.impl.JsonParserMinimalBase._throwUnquotedSpace(JsonParserMinimalBase.java:482) at org.codehaus.jackson.impl.Utf8StreamParser._finishString2(Utf8StreamParser.java:1975) at org.codehaus.jackson.impl.Utf8StreamParser._finishString(Utf8StreamParser.java:1905) at org.codehaus.jackson.impl.Utf8StreamParser.getText(Utf8StreamParser.java:276)

ソリューション

課題の説明を扱うときは、{{issue.description.html.jsonEncode}} 関数を {{issue.description.html}}{{issue.description.htmlencode}} の代わりに使用することをお勧めします。これによって、説明に含まれるすべての特殊文字が適切にエンコードされ、正しく送信されるようになります。

ペイロードの例を以下に示します。

1 2 3 4 5 6 7 { "type":"page", "title":"{{Test Page Title}}", "space":{"key":"Test"}, "body":{"storage":{"value":"{{issue.description.html.jsonEncode}}", "representation":"storage"}} }

更新日時: 2024 年 6 月 6 日

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。