Implementing a capture_feedback function
I forked the repo to attempt to implement this function based off of the corresponding function in the Javascript SDK: https://github.com/getsentry/sentry-javascript/blob/136370c8d4f0c0cd9ec80b47ba2292406d0b4ba7/packages/core/src/feedback.ts#L8
From what I gather, the necessary steps are:
- Add a
Feedbackvariant to theContextenum. - Add a
FeedbackContextstruct that holdscontact_email,name, andmessage. - I'm not sure what to do about the
typefield in the JavascriptEvent. I see it in the Go SDK as well for their event type, but I don't see it in the Rust SDK'sEventtype. - Add the
Context::Feedbackto thecontextsfield of theEvent - Call
capture_eventwith this newEvent.
I went ahead and implemented that locally, but it's showing up as an "unlabeled event" (and not displaying in the User Feedback section), even though the "Feedback" context is populated as shown in the screenshot below. I've also checked that the project this event is sent to has User Feedback enabled.
You can see what I've implemented so far here (there's no capture_feedback function, but I'm creating the event and calling capture_event manually in my own project): https://github.com/zmitchell/sentry-rust/commit/248de09e183481ae8c0186b246aec8fffcf22979
Hi @zmitchell , thanks for opening this issue and giving it a try.
If you check the develop docs for this feature https://develop.sentry.dev/sdk/data-model/envelope-items/#user-feedback it's mentioned that user feedback is an item type.
This means that when sending it in an envelope we should set the item header (https://develop.sentry.dev/sdk/data-model/envelopes/#items) type to feedback for it to be recognized properly.
If we use capture_event, then the item header will be set to event, which is not what we want.
So the proper solution should be to create a new variant in EnvelopeItem, making sure that it serializes with the type header set to feedback. This way we could create an envelope with an item of this type and then call transport.send_envelope directly.
Unfortunately we're not prioritizing this feature at the moment, but would be happy to review the PR if you get it to work. (we don't necessarily need the whole API like in JS, just being able to create envelopes with items of this type would be great and we can document that)
Thanks for the pointers! I have this working now and I'll clean it up and submit a PR in the next couple of days.
Thanks for the pointers! I have this working now and I'll clean it up and submit a PR in the next couple of days.
Hello! Just checking in. Has this been merged into main? Thanks!
Hey @x93008, we haven't received a PR to implement this feature yet. I'm happy to review it if @zmitchell or you want to contribute it.