如何在Sentry中自定义用户反馈?

时间:2016-11-01 01:53:16

标签: sentry

如何在Sentry中自定义用户反馈表单?

默认情况下会出现类似于&#34的内容;看起来我们遇到了一些内部问题。"

是否可以更改消息,收集的数据等?

感谢。

3 个答案:

答案 0 :(得分:0)

有一个API here,但您必须得到一个event_id,它基本上是由您的应用中的错误或异常生成的......我仍在尝试弄清楚如何使用此功能没有默认的集成表单。

答案 1 :(得分:0)

Sentry具有内置的前端用户反馈表,您可以在一定程度上触发和自定义该表。 Angular4 +中的基本实现如下所示:

import { ErrorHandler } from '@angular/core';
import { Config } from '../config/config';
import * as Sentry from '@sentry/browser';

Sentry.init({
  dsn: 'https://0123456789abcdef.sentry.io/000001', 
  release: Config.SENTRY_RELEASE
});

export class SentryErrorHandler implements ErrorHandler {
  handleError(error: any): void {
    const eventId = Sentry.captureException(error.originalError || error);
    Sentry.showReportDialog({
      eventId,
      title: 'Aw, Snap! You broke the internet!',
      subtitle: 'Send us an email and we will fix it.',
      subtitle2: 'Please refresh your cache to continue (cmd+R / ctrl+R)'
    });
  }
}

Here's a link to the showReportDialog API

答案 2 :(得分:0)

现在的方式好像是这样的:

  • 制作自己的用户界面
  • 生成一个 Sentry 事件并将其加入队列(如果尚未发送事件也没关系)
  • POST 到 Sentry 的报告收集器使用的特殊端点

详情见https://github.com/getsentry/sentry-javascript/issues/3111

const dsn = SENTRY_DSN;
const eventId = captureMessage("User report");

const query = Object.entries({dsn, eventId})
  .map(([k, v]) => `${ k }=${ encodeURIComponent(v) }`).join("&");

const body = new FormData();
Object.entries(
  {name: "Alex Foo", email: "a.foo@example.com", comments: "Long text goes here"})
  .map(([k, v]) => body.append(k, v));

fetch(`https://sentry.io/api/embed/error-page/?${ query }`,
  {method: "POST", body});