Skip to main content

Напоминание неактивным пользователям использовать свою лицензию на GitHub Copilot

Используйте API GitHub для идентификации неактивных пользователей и помочь им приступить к работе.

Кто может использовать эту функцию?

Organization owners and billing managers

GitHub Copilot Business or GitHub Copilot Enterprise

При развертывании GitHub Copilot в бизнесе важно отслеживать, какие пользователи используют свою лицензию Copilot, чтобы вы могли эффективно реагировать, переназначив неиспользуемые лицензии или помогая людям приступить к работе с Copilot.

Список всех назначений мест Copilot можно использовать для конечной точки API организации , чтобы найти дату последнего действия для каждого пользователя, которому назначена лицензия в организации. Затем вы можете автоматически реагировать, отфильтровав пользователей, которые не использовали свою лицензию в течение определенного периода времени и отправив напоминание этим пользователям.

Написание сообщения напоминания

Напоминание о неактивных пользователях должно помочь пользователям получить прошлые распространенные блокировщики внедрения для Copilot. Мы рекомендуем определить конкретные блокировщики для вашей компании, выполнив опросы или интервью разработчиков.

Например, сообщение может содержать сведения и ссылки, чтобы помочь пользователям:

  • Установите Copilot в своей среде.
  • Настройте Copilot для работы с прокси-сервером или брандмауэром вашей компании.
  • Получите большую часть данных Copilot в повседневной работе.

Вы также должны четко сообщить о любых дальнейших действиях, которые вы будете предпринимать, если лицензия продолжает оставаться неиспользуемой, например отзыв лицензии пользователя.

Пример напоминания

В следующем разделе мы будем использовать это сообщение в службе автоматизации, которая создает проблему, назначенную каждому неактивного пользователя.

Мы заметили, что вы не использовали назначенную лицензию для GitHub Copilot в течение 30 дней. Ниже приведены некоторые ресурсы, которые помогут вам приступить к работе:

Если вам больше не нужен доступ к Copilot, сообщите нам об этом. Если лицензия остается неактивной в течение более 30 дней, мы отменим ее, чтобы освободить доступ для другого пользователя.

Пример напоминания в 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.

Автоматизация напоминания с помощью GitHub Actions

В следующем примере рабочий процесс использует API для идентификации пользователей в организации, которая не использовала свою лицензию в течение 30 дней, а затем создает проблему, назначенную каждому пользователю. Это простой пример, который можно адаптировать в соответствии с вашими потребностями.

Чтобы использовать этот рабочий процесс, выполните указанные ниже действия.

  1. Создайте метку в репозитории, где будут созданы проблемы с напоминанием. Вызовите метку copilot-reminder. Мы будем использовать эту метку для проверки того, открыта ли проблема с напоминанием для каждого неактивного пользователя.

    Сведения о создании метки см. в разделе Управление метками.

  2. Сохраните сообщение напоминания, например в примере напоминания в Markdown, в качестве переменной GitHub Actions в репозитории или организации. Вызов переменной COPILOT_REMINDER_MESSAGE.

    Сведения о создании переменной см. в разделе Хранение сведений в переменных.

  3. Создайте personal access token с разрешением на вызов списка всех назначений мест Copilot для конечной точки API организации . Например, создайте подробный маркер со следующими сведениями:

    • Владелец ресурса: организация, в которой вы ищете неактивных пользователей.
    • Разрешения организации: GitHub Copilot Business (только для чтения).

    Сведения о создании маркера см. в разделе Управление личными маркерами доступа.

  4. Сохраните маркер доступа в виде секрета GitHub Actions в репозитории или организации. Вызовите секрет COPILOT_LICENSE_READ.

    Сведения о создании секрета см. в разделе Использование секретов в GitHub Actions.

  5. В приведенном ниже примере создайте рабочий процесс в репозитории, в котором необходимо создать проблемы с напоминанием.

    Если вы не знакомы с GitHub Actions, см. раздел Краткое руководство по GitHub Actions.

  6. В рабочем процессе замените ORG/REPO заполнители в gh командах именем репозитория, в котором необходимо создать проблемы с напоминанием. Например: octo-org/octo-repo.

Пример рабочего процесса

Note

В этом примере предполагается, что вы назначаете лицензии через организацию. Если вы используете выделенную корпоративную учетную запись для Copilot Business, вам потребуется использовать разные конечные точки API. См . раздел AUTOTITLE.

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 }}

Дополнительные материалы