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

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

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

Список всех назначений мест Copilot можно использовать [для конечной точки API организации](/ru/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization) , чтобы найти дату последнего действия для каждого пользователя, которому назначена лицензия в организации. Затем вы можете автоматически реагировать, отфильтровав пользователей, которые не использовали свою лицензию в течение определенного периода времени и отправив напоминание этим пользователям.

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

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

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

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

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

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

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

> Мы заметили, что вы не использовали назначенную лицензию GitHub Copilot в течение 30 дней. Вот несколько ресурсов, которые могут помочь вам get started:
>
> * Если вы еще не настроили Copilot в вашей среде, см. раздел [AUTOTITLE или AUTOTITLE](/ru/copilot/how-tos/set-up/set-up-for-self).[](/ru/copilot/how-tos/troubleshoot-copilot/troubleshoot-common-issues)
> * Лучшие практики и советы по getting started см. [Лучшие практики использования GitHub Copilot](/ru/copilot/get-started/best-practices) или [Инженерия подсказок для GitHub Copilot Chat](/ru/copilot/concepts/prompting/prompt-engineering).
> * Для примеров, связанных с конкретными задачами, см. [Кулинарная книга GitHub Copilot](/ru/copilot/tutorials/copilot-cookbook).
>
> Если вам больше не нужен доступ Copilot, сообщите нам об этом вопросе. Если ваша лицензия останется неактивной ещё 30 дней, мы аннулируем её, чтобы освободить access для другого пользователя.

#### Пример напоминания в Markdown

<!-- markdownlint-disable search-replace -->

```markdown copy
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.
```

<!-- markdownlint-enable search-replace -->

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

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

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

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

   Сведения о создании метки см. в разделе [Управление метками](/ru/issues/using-labels-and-milestones-to-track-work/managing-labels#creating-a-label).
2. Сохраните сообщение напоминания, например в [примере напоминания в Markdown](#example-reminder-in-markdown), в качестве переменной GitHub Actions в репозитории или организации. Вызов переменной `COPILOT_REMINDER_MESSAGE`.

   Сведения о создании переменной см. в разделе [Хранение сведений в переменных](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#creating-configuration-variables-for-a-repository).
3. personal access token Создайте список со разрешением на [вызов всех назначений Copilot мест для конечной](/ru/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization) точки API организации. Например, создайте подробный маркер со следующими сведениями:

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

   Чтобы создать токена, см. [Управление личными маркерами доступа](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token).
4. Сохраните маркер доступа в качестве секрета GitHub Actions в репозитории или организации. Вызовите секрет `COPILOT_LICENSE_READ`.

   Чтобы создать секрет, см. [Использование секретов в GitHub Actions](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository).
5. В приведенном ниже примере создайте рабочий процесс в репозитории, в котором необходимо создать проблемы с напоминанием.

   Если вы не знакомы GitHub Actions, см. [autoTITLE](/ru/actions/get-started/quickstart).
6. Если вы хотите создать задачи в репозитории, отличном от того, в котором находится рабочий процесс, замените `${{ github.repository }}` в командах `gh` на имя репозитория, в котором нужны проблемы с напоминанием. Например: `octo-org/octo-repo`.

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

> \[!NOTE] В этом примере предполагается, что вы назначаете лицензии через организацию. Аналогичные конечные точки API существуют для корпоративных учетных записей и корпоративных команд. См [. раздел AUTOTITLE](/ru/rest/copilot/copilot-user-management).

<!-- markdownlint-disable GHD021 -->

```yaml annotate
# Name your workflow
name: Remind inactive users about GitHub Copilot license

on:
  # Run on demand (enables `Run workflow` button on the Actions tab to easily trigger a run manually)
  workflow_dispatch:
  # Run the workflow every day at 8am UTC
  schedule:
    - cron: '0 8 * * *'

jobs:
  context-log:
    runs-on: ubuntu-latest

    # Modify the default permissions granted to GITHUB_TOKEN
    permissions:
      contents: read
      issues: write

    steps:
      - name: Check last GitHub Copilot activity
        id: check-last-activity
        run: |
          # List all GitHub Copilot seat assignments for an organization
          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/${{ github.repository_owner }}/copilot/billing/seats)
          echo "Raw Response from gh api:"
          echo "$RESPONSE"

          # Parse and check each user's `last_activity_at` and `created_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')
            CREATED_AT=$(echo "$seat" | jq -r '.created_at')

            # List all open issues with label `copilot-reminder`
            EXISTING_ISSUES=$(gh issue list --repo ${{ github.repository }} --assignee $LOGIN --label 'copilot-reminder' --json id)

            # Get last activity date and convert dates to seconds since epoch for comparison
            if [ "$LAST_ACTIVITY" = "null" ]; then
              LAST_ACTIVITY_DATE=$(date -d "$CREATED_AT" +%s)
            else
              LAST_ACTIVITY_DATE=$(date -d "$LAST_ACTIVITY" +%s)
            fi
            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"

              NEW_ISSUE_URL="$(gh issue create --title "Reminder about your GitHub Copilot license" --body "${{ vars.COPILOT_REMINDER_MESSAGE }}" --repo ${{ github.repository }} --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 GH_TOKEN, required for the 'gh issue' commands
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```

<!-- markdownlint-enable GHD021 -->

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

* [Свойства данных метрик для GitHub Copilot](/ru/copilot/reference/metrics-data#last_activity_at)
* [Продвижение внедрения GitHub Copilot в вашей компании](/ru/copilot/tutorials/roll-out-at-scale/enable-developers/drive-adoption)
* [Отслеживание активации и первоначального использования лицензий с помощью метрик использования Copilot](/ru/copilot/tutorials/roll-out-at-scale/assign-licenses/track-usage-and-adoption)