Skip to main content

Lembrando usuários inativos de usar suas licenças do GitHub Copilot

Use a API do GitHub para identificar usuários inativos e ajudá-los a começar.

Quem pode usar esse recurso?

Organization owners and billing managers

GitHub Copilot Business or GitHub Copilot Enterprise

Ao distribuir o GitHub Copilot em uma empresa, é importante controlar quais usuários estão usando suas licenças do Copilot para que seja possível responder efetivamente reatribuindo licenças não utilizadas ou ajudando as pessoas a começar a usar o Copilot.

Use o ponto de extremidade de API para Listar todas as atribuições de estação do Copilot para uma organização para localizar a data da última atividade de cada usuário que recebe uma licença em uma organização. Em seguida, você pode responder automaticamente filtrando por usuários que não usaram a licença por um determinado período e enviando um lembrete para eles.

Escrevendo a mensagem de lembrete

Seu lembrete para usuários inativos deve ajudar os usuários a superar obstáculos comuns à adoção do Copilot. Recomendamos identificar obstáculos específicos para sua empresa realizando pesquisas ou entrevistando os desenvolvedores.

Por exemplo, a mensagem pode incluir informações e links para ajudar os usuários a:

  • Instalar o ambiente do Copilot.
  • Configurar o Copilot para funcionar com o proxy ou firewall de sua empresa.
  • Aproveitar ao máximo o Copilot em seu trabalho cotidiano.

Você também deve comunicar claramente qualquer outra ação que tomará se a licença continuar não sendo usada, como revogá-la.

Exemplo de lembrete

Na próxima seção, usaremos essa mensagem em uma automação que cria um problema atribuído a cada usuário inativo.

Notamos que você não usou sua licença atribuída do GitHub Copilot em 30 dias. Aqui estão alguns recursos que podem ajudar você a começar:

Se você não precisa mais de acesso ao Copilot, informe-nos neste problema. Se sua licença permanecer inativa por mais 30 dias, nós a revogaremos para liberar o acesso para outro usuário.

Exemplo de lembrete em Markdown

Markdown
We noticed you haven't used your assigned license for GitHub Copilot in 30 days. Here are some resources that might help you get started:

* If you haven't yet set up Copilot in your environment, see [Setting up GitHub Copilot for yourself](https://docs.github.com/en/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself) or [Troubleshooting common issues with GitHub Copilot](https://docs.github.com/en/copilot/troubleshooting-github-copilot/troubleshooting-common-issues-with-github-copilot).
* For best practices and advice on getting started, see [Best practices for using GitHub Copilot](https://docs.github.com/en/copilot/using-github-copilot/best-practices-for-using-github-copilot) or [Prompt engineering for GitHub Copilot](https://docs.github.com/en/copilot/using-github-copilot/prompt-engineering-for-github-copilot).
* For examples related to specific tasks, see [Copilot Chat Cookbook](https://docs.github.com/en/copilot/example-prompts-for-github-copilot-chat).

If you no longer need access to Copilot, please let us know in this issue. If your license remains inactive for a further 30 days, we'll revoke it to free up access for another user.

Automatizando o lembrete com o GitHub Actions

O fluxo de trabalho de exemplo a seguir usa a API para identificar usuários em uma organização que não usam sua licença há 30 dias e, em seguida, cria um problema atribuído a cada usuário. Este é um exemplo simples que você pode adaptar para atender às suas necessidades.

Para usar este fluxo de trabalho:

  1. Crie um rótulo no repositório em que os problemas de lembrete serão criados. Dê ao rótulo o nome copilot-reminder. Usaremos esse rótulo para verificar se um problema de lembrete já está aberto para cada usuário inativo.

    Para criar um rótulo, confira Gerenciar etiquetas.

  2. Salve sua mensagem de lembrete, como a fornecida em Exemplo de lembrete em Markdown, como uma variável do GitHub Actions em seu repositório ou organização. Chame a variável COPILOT_REMINDER_MESSAGE.

    Para criar uma variável, confira Armazenar informações em variáveis.

  3. Crie um personal access token com permissão para chamar o ponto de extremidade de API Listar todas as atribuições de estação do Copilot para uma organização. Por exemplo, crie um token refinado com os seguintes detalhes:

    • Proprietário do recurso: a organização em que você está procurando usuários inativos.
    • Permissões da organização: GitHub Copilot Business (somente leitura).

    Para criar um token, confira Gerenciar seus tokens de acesso pessoal.

  4. Salve o token de acesso como um segredo do GitHub Actions em seu repositório ou sua organização. Chame o segredo COPILOT_LICENSE_READ.

    Para criar um segredo, confira Usar segredos em ações do GitHub.

  5. Usando o exemplo abaixo, crie o fluxo de trabalho no repositório em que deseja que os problemas de lembrete sejam criados.

    Se você é novato no GitHub Actions, confira Início rápido para GitHub Actions.

  6. No fluxo de trabalho, substitua os espaços reservados ORG/REPO nos comandos gh pelo nome do repositório em que deseja que os problemas de lembrete sejam criados. Por exemplo: octo-org/octo-repo.

Fluxo de trabalho de exemplo

Note

Este exemplo pressupõe que você atribui licenças por meio de uma organização. Se você usa uma conta empresarial dedicada para o Copilot Business, precisa usar pontos de extremidade de API diferentes. Confira Configurando uma empresa dedicada para o Copilot Business (contas pessoais).

YAML
name: Remind inactive users about Copilot license

Name your workflow

on:
  schedule:
    - cron: '0 8 * * *'
jobs:
  context-log:
    runs-on: ubuntu-latest
    steps:
      - name: Check Copilot Last Activity
        id: check-last-activity
        run: |

Run the workflow every day at 8am UTC

          RESPONSE=$(gh api \
            -H "Accept: application/vnd.github+json" \
            -H "X-GitHub-Api-Version: 2022-11-28" \
            -H "Authorization: Bearer ${{ secrets.COPILOT_LICENSE_READ }}" \
            /orgs/$ORGANIZATION_VAR/copilot/billing/seats)
          echo "Raw Response from gh api:"
          echo "$RESPONSE"

Call the user management API

          echo "$RESPONSE" | jq -c '.seats[]' | while read -r seat; do
            LOGIN=$(echo "$seat" | jq -r '.assignee.login')
            LAST_ACTIVITY=$(echo "$seat" | jq -r '.last_activity_at')

Parse and check each user's last_activity_at

            EXISTING_ISSUES=$(gh issue list --repo ORG/REPO --assignee $LOGIN --label 'copilot-reminder' --json id)

Replace ORG/REPO with the repository name

            LAST_ACTIVITY_DATE=$(date -d "$LAST_ACTIVITY" +%s)
            THIRTY_DAYS_AGO=$(date -d "30 days ago" +%s)

Convert dates to seconds since epoch for comparison

            if [ "$LAST_ACTIVITY_DATE" -lt "$THIRTY_DAYS_AGO" ] && [ "$EXISTING_ISSUES" = "[]" ]; then
              echo "User $LOGIN has not been active in the last 30 days. Last activity: $LAST_ACTIVITY"

Create issues for inactive users who don't have an existing open issue

              NEW_ISSUE_URL="$(gh issue create --title "Reminder about your GitHub Copilot license" --body "${{ vars.COPILOT_REMINDER_MESSAGE }}" --repo ORG/REPO --assignee $LOGIN --label 'copilot-reminder')"
            else
              echo "User $LOGIN is active or already has an assigned reminder issue. Last activity: $LAST_ACTIVITY"
            fi
          done

Replace ORG/REPO with the repository name

        env:
          GITHUB_TOKEN: ${{ github.token }}

Set the GITHUB_TOKEN, required for the gh issue commands

# Name your workflow
name: Remind inactive users about Copilot license

# Run the workflow every day at 8am UTC
on:
  schedule:
    - cron: '0 8 * * *'

jobs:
  context-log:
    runs-on: ubuntu-latest
    steps:
      - name: Check Copilot Last Activity
        id: check-last-activity
        run: |
          # Call the user management API
          RESPONSE=$(gh api \
            -H "Accept: application/vnd.github+json" \
            -H "X-GitHub-Api-Version: 2022-11-28" \
            -H "Authorization: Bearer ${{ secrets.COPILOT_LICENSE_READ }}" \
            /orgs/$ORGANIZATION_VAR/copilot/billing/seats)
          echo "Raw Response from gh api:"
          echo "$RESPONSE"

          # Parse and check each user's `last_activity_at`
          echo "$RESPONSE" | jq -c '.seats[]' | while read -r seat; do
            LOGIN=$(echo "$seat" | jq -r '.assignee.login')
            LAST_ACTIVITY=$(echo "$seat" | jq -r '.last_activity_at')

            # Replace ORG/REPO with the repository name
            EXISTING_ISSUES=$(gh issue list --repo ORG/REPO --assignee $LOGIN --label 'copilot-reminder' --json id)

            # Convert dates to seconds since epoch for comparison
            LAST_ACTIVITY_DATE=$(date -d "$LAST_ACTIVITY" +%s)
            THIRTY_DAYS_AGO=$(date -d "30 days ago" +%s)

            # Create issues for inactive users who don't have an existing open issue
            if [ "$LAST_ACTIVITY_DATE" -lt "$THIRTY_DAYS_AGO" ] && [ "$EXISTING_ISSUES" = "[]" ]; then
              echo "User $LOGIN has not been active in the last 30 days. Last activity: $LAST_ACTIVITY"

              # Replace ORG/REPO with the repository name
              NEW_ISSUE_URL="$(gh issue create --title "Reminder about your GitHub Copilot license" --body "${{ vars.COPILOT_REMINDER_MESSAGE }}" --repo ORG/REPO --assignee $LOGIN --label 'copilot-reminder')"
            else
              echo "User $LOGIN is active or already has an assigned reminder issue. Last activity: $LAST_ACTIVITY"
            fi
          done

        # Set the GITHUB_TOKEN, required for the `gh issue` commands
        env:
          GITHUB_TOKEN: ${{ github.token }}

Leitura adicional