Skip to content

Commit

Permalink
Update the JP version of error handling document page
Browse files Browse the repository at this point in the history
  • Loading branch information
seratch committed Apr 19, 2022
1 parent 68ebfdf commit eec521f
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 2 deletions.
4 changes: 2 additions & 2 deletions docs/_advanced/error_handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ You can also define more focussed and specific error handlers for a variety of e
- `unhandledRequestHandler`: triggered when a request from Slack goes unacknowledged.
- `unhandledRequestTimeoutMillis`: the amount of time in milliseconds to wait for request acknowledgement from the application before triggering the `unhandledRequestHandler`. Default is `3001`.

*NOTE*: It is imperative that any custom Error Handlers defined in your app respond to the underlying Slack request that led to the error, using `response.writeHead` to set the HTTP status code of the response and `response.end()` to dispatch the response back to Slack. See the example for details.
*NOTE*: It is imperative that any custom Error Handlers defined in your app respond to the underlying Slack request that led to the error, using `response.writeHead()` to set the HTTP status code of the response and `response.end()` to dispatch the response back to Slack. See the example for details.
</div>

```javascript
Expand All @@ -41,8 +41,8 @@ const app = new App({
return true;
},
unhandledRequestHandler: async ({ logger, response }) => {
// acknowledge it anyway!
logger.info('Acknowledging this incoming request because 2 seconds already passed...');
// acknowledge it anyway!
response.writeHead(200);
response.end();
},
Expand Down
40 changes: 40 additions & 0 deletions docs/_advanced/ja_error_handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,47 @@ order: 1
リスナーでエラーが発生した場合は `try`/`catch` を使って直接ハンドリングすることをおすすめします。しかし、それでもなおすり抜けてしまうエラーのパターンもあるでしょう。デフォルトでは、このようなエラーはコンソールにログ出力されます。ご自身でこれらをハンドリングするには、`app.error(fn)` メソッドによって、グローバルエラーハンドラーを定義してください。
</div>

また、様々なエラーパターンにより特化したエラーハンドラーを `HTTPReceiver` に直接設定することができます。

- `dispatchErrorHandler`: 想定しないパスにリクエストが来たときに実行されます
- `processEventErrorHandler`: リクエストを処理するとき(例:ミドルウェアや認可プロセス)に発生した例外に対して実行されます
- `unhandledRequestHandler`: Slack からのリクエストが確認(`ack()`)されなかったときに実行されます
- `unhandledRequestTimeoutMillis`: リクエストが受信されてから `unhandledRequestHandler` が実行されるまでの待機時間(ミリ秒単位)。 デフォルトは `3001` です。

**: あなたのアプリ内に定義されたカスタムのエラーハンドラーは、エラーとなった Slack からのリクストに応答するために `response.writeHead()` を呼び出して応答の HTTP ステータスコードを設定し、かつ `response.end()` を呼び出して Slack へのレスポンスを送信する必要があります。詳細は以下の例を参考にしてください。
</div>

```javascript
const { App } = require('@slack/bolt');

const app = new App({
receiver: new HTTPReceiver({
signingSecret: process.env.SLACK_SIGNING_SECRET,
// より詳細で特化したエラーハンドラー
dispatchErrorHandler: ({ error, logger, response }) => {
logger.error(`dispatch error: ${error}`);
response.writeHead(404);
response.write("Something is wrong!");
response.end();
},
processEventErrorHandler: ({ error, logger, response }) => {
logger.error(`processEvent error: ${error}`);
// とにかく ack する場合の方法!
response.writeHead(200);
response.end();
return true;
},
unhandledRequestHandler: async ({ logger, response }) => {
logger.info('Acknowledging this incoming request because 2 seconds already passed...');
// とにかく ack する場合の方法!
response.writeHead(200);
response.end();
},
unhandledRequestTimeoutMillis: 2000, // デフォルト値は 3001
}),
});

// より一般的でグローバルなエラーハンドラー
app.error((error) => {
// メッセージ再送信もしくはアプリを停止するかの判断をするためにエラーの詳細を出力して確認
console.error(error);
Expand Down

0 comments on commit eec521f

Please sign in to comment.