feat(integrations): open a GitHub issue when a ticket is created - #31
Open
YJack0000 wants to merge 2 commits into
Open
feat(integrations): open a GitHub issue when a ticket is created#31YJack0000 wants to merge 2 commits into
YJack0000 wants to merge 2 commits into
Conversation
Registers a `github` account-level integration. When a ticket is created, HookListener#ticket_created enqueues HookJob, which hands the event to Integrations::Github::ProcessorService. The service POSTs to the GitHub REST issues API with the ticket subject as the title and a markdown body carrying the contact, ticket type, due date, a link back to the conversation and the first incoming message. On success the issue url, number and repository are stored on the conversation's additional_attributes and a private note with the issue link is posted so agents see it in the thread; that same attribute makes a retried job a no-op. A rejected request is logged and dropped. Settings: access_token (GitHub PAT), repository (owner/repo) and an optional label applied to every issue. Only repository and label are returned to the frontend.
Author
|
Follow-up commit 8a91b89: the Personal Access Token field is now a |
yui0303
approved these changes
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hands support cases over to engineering automatically. Once the GitHub integration is connected on an account, every ticket that gets created opens an issue in the configured repository, carrying the contact, ticket type, due date, a link back to the conversation and the customer's first message. The issue link is written back to the conversation as a private note so agents see where the case went. This replaces the standalone support-app → GitHub Issue form: the inbox becomes the single entry point, and GitHub is one integration among the ones an account can turn on.
Closes
Part of the support consolidation into Pathors Inbox (proposal: https://claude.ai/code/artifact/0e4242ef-d418-40ff-9bf5-bb37165d9f75). Board ticket to be linked.
How to test
owner/repo, and optionally a label.additional_attributes.github_issue).What changed
config/integration/apps.yml: newgithubapp (account hook, single instance). Settings:access_token(required),repository(required,owner/repopattern),label(optional). Onlyrepositoryandlabelare returned to the frontend. The generic integration page renders the form from the schema, so no frontend code.HookListener#ticket_createdroutesticket.createdto account hooks;HookJobdispatchesgithubtoIntegrations::Github::ProcessorService.Integrations::Github::ProcessorService: POSTs to the GitHub REST issues endpoint, writes{url, number, repository}into the conversation'sadditional_attributes.github_issue, creates the private note. Idempotent on that attribute; failures are logged, not raised.Note: the PAT lives in the hook's
settingsjsonb, same as the OpenAI integration'sapi_key. It is kept off the API viavisible_propertiesbut is not encrypted at rest. No migration.