name: Send notification via Google Chat description: "Sends a notification to a Google Chat room when a pull request is opened." inputs: webhook_url: description: "The URL of the Google Chat webhook." required: true title: description: "The title of the notification." required: true default: 'no title provided' event_author: description: "The author of the event." required: true default: 'unknown' event_title: description: "The title of the event." required: true event_body: description: "The body of the event." required: true default: 'no body provided' event_number: description: "The number of the event." required: true default: 'no number provided' event_url: description: "The url of the event." required: true default: 'none' runs: using: "composite" steps: - name: Install prerequisites shell: bash run: | echo "::group::apt install" set -e apt update apt install -y curl jq echo "::endgroup::" - name: Notify via Google Chat Webhook shell: bash env: WEBHOOK: ${{ inputs.webhook_url }} run: | set -e PAYLOAD=$(jq -n \ --arg header_title "${{ inputs.title }}" \ --arg repo "${{ github.repository || '' }}" \ --arg title "${{ inputs.event_title || 'no event title given' }}" \ --arg body "${{ inputs.event_body || 'no event body given' }}" \ --arg author "${{ inputs.event_author || 'no event author given' }}" \ --arg url "${{ inputs.event_url || 'no event url given' }}" \ '{ "header": { "title": "$header_title", "subtitle": "Repo: \($repo)", "imageUrl": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/git.png", "imageType": "SQUARE" }, "sections": [ { "header": $title, "collapsible": false, "widgets": [ { "decoratedText": { "icon": { "knownIcon": "PERSON" }, "text": "Opened by: \($author)" } }, { "textParagraph": { "text": $body, "maxLines": 2 } } ] }, { "widgets": [ { "buttonList": { "buttons": [ { "text": "View Source Event", "type": "FILLED", "onClick": { "openLink": { "url": $url } } } ] } } ] } ] }') curl \ --fail-with-body \ -X POST \ -H 'Content-Type: application/json' \ "${{ inputs.webhook_url }}&messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD&threadKey=${{ github.repository }}/pr/${{ inputs.event_number }}" \ -d "$(jq -n --argjson card "$PAYLOAD" '{ "cardsV2": [ { "cardId": "new-pr", "card": $card } ] }')"