{"meta":{"title":"Напоминание неактивным пользователям использовать лицензию GitHub Copilot","intro":"GitHub Используйте API для выявления неактивных пользователей и помочь им приступить к работе.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/tutorials","title":"Учебники"},{"href":"/ru/copilot/tutorials/roll-out-at-scale","title":"Развертывание в масштабе"},{"href":"/ru/copilot/tutorials/roll-out-at-scale/assign-licenses","title":"Назначение лицензий"},{"href":"/ru/copilot/tutorials/roll-out-at-scale/assign-licenses/remind-inactive-users","title":"Напоминать неактивных пользователей"}],"documentType":"article"},"body":"# Напоминание неактивным пользователям использовать лицензию GitHub Copilot\n\nGitHub Используйте API для выявления неактивных пользователей и помочь им приступить к работе.\n\nПри развертывании GitHub Copilot в бизнесе важно следить за тем, какие пользователи используют свою Copilot лицензию, чтобы эффективно реагировать, переназначая неиспользуемые лицензии или помогая людям приступить к работе Copilot.\n\nСписок всех назначений мест Copilot можно использовать [для конечной точки API организации](/ru/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization) , чтобы найти дату последнего действия для каждого пользователя, которому назначена лицензия в организации. Затем вы можете автоматически реагировать, отфильтровав пользователей, которые не использовали свою лицензию в течение определенного периода времени и отправив напоминание этим пользователям.\n\n## Написание сообщения напоминания\n\nНапоминание о неактивных пользователях должно помочь пользователям получить прошлые распространенные блокировщики внедрения.Copilot Мы рекомендуем определить конкретные блокировщики для вашей компании, выполнив опросы или интервью разработчиков.\n\nНапример, сообщение может содержать сведения и ссылки, чтобы помочь пользователям:\n\n* Установите Copilot в своей среде.\n* Настройте Copilot работу с прокси-сервером или брандмауэром вашей компании.\n* Получите большую часть из Copilot своей повседневной работы.\n\nВы также должны четко сообщить о любых дальнейших действиях, которые вы будете предпринимать, если лицензия продолжает оставаться неиспользуемой, например отзыв лицензии пользователя.\n\n### Пример напоминания\n\nВ следующем разделе мы будем использовать это сообщение в службе автоматизации, которая создает проблему, назначенную каждому неактивного пользователя.\n\n> Мы заметили, что вы не использовали назначенную лицензию GitHub Copilot в течение 30 дней. Вот несколько ресурсов, которые могут помочь вам get started:\n>\n> * Если вы еще не настроили Copilot в вашей среде, см. раздел [AUTOTITLE или AUTOTITLE](/ru/copilot/how-tos/set-up/set-up-for-self).[](/ru/copilot/how-tos/troubleshoot-copilot/troubleshoot-common-issues)\n> * Лучшие практики и советы по getting started см. [Лучшие практики использования GitHub Copilot](/ru/copilot/get-started/best-practices) или [Инженерия подсказок для GitHub Copilot Chat](/ru/copilot/concepts/prompting/prompt-engineering).\n> * Для примеров, связанных с конкретными задачами, см. [Кулинарная книга GitHub Copilot](/ru/copilot/tutorials/copilot-cookbook).\n>\n> Если вам больше не нужен доступ Copilot, сообщите нам об этом вопросе. Если ваша лицензия останется неактивной ещё 30 дней, мы аннулируем её, чтобы освободить access для другого пользователя.\n\n#### Пример напоминания в Markdown\n\n<!-- markdownlint-disable search-replace -->\n\n```markdown copy\nWe noticed you haven't used your assigned license for GitHub Copilot in 30 days. Here are some resources that might help you get started:\n\n* 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).\n* 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).\n* For examples related to specific tasks, see [Copilot Chat Cookbook](https://docs.github.com/en/copilot/example-prompts-for-github-copilot-chat).\n\nIf 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.\n```\n\n<!-- markdownlint-enable search-replace -->\n\n## Автоматизация напоминания с помощью GitHub Actions\n\nВ следующем примере рабочий процесс использует API для идентификации пользователей в организации, которая не использовала свою лицензию в течение 30 дней или не использовала его вообще после назначения места, а затем создает проблему, назначенную каждому пользователю. Это простой пример, который можно адаптировать в соответствии с вашими потребностями.\n\nЧтобы использовать этот рабочий процесс, выполните указанные ниже действия.\n\n1. Создайте метку в репозитории, где будут созданы проблемы с напоминанием. Вызовите метку `copilot-reminder`. Мы будем использовать эту метку для проверки того, открыта ли проблема с напоминанием для каждого неактивного пользователя.\n\n   Сведения о создании метки см. в разделе [Управление метками](/ru/issues/using-labels-and-milestones-to-track-work/managing-labels#creating-a-label).\n2. Сохраните сообщение напоминания, например в [примере напоминания в Markdown](#example-reminder-in-markdown), в качестве переменной GitHub Actions в репозитории или организации. Вызов переменной `COPILOT_REMINDER_MESSAGE`.\n\n   Сведения о создании переменной см. в разделе [Хранение сведений в переменных](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#creating-configuration-variables-for-a-repository).\n3. personal access token Создайте список со разрешением на [вызов всех назначений Copilot мест для конечной](/ru/rest/copilot/copilot-user-management#list-all-copilot-seat-assignments-for-an-organization) точки API организации. Например, создайте подробный маркер со следующими сведениями:\n\n   * **Владелец** ресурса: организация, в которой вы ищете неактивных пользователей.\n   * **Разрешения организации**: GitHub Copilot Business (только для чтения).\n\n   Чтобы создать токена, см. [Управление личными маркерами доступа](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token).\n4. Сохраните маркер доступа в качестве секрета GitHub Actions в репозитории или организации. Вызовите секрет `COPILOT_LICENSE_READ`.\n\n   Чтобы создать секрет, см. [Использование секретов в GitHub Actions](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository).\n5. В приведенном ниже примере создайте рабочий процесс в репозитории, в котором необходимо создать проблемы с напоминанием.\n\n   Если вы не знакомы GitHub Actions, см. [autoTITLE](/ru/actions/get-started/quickstart).\n6. Если вы хотите создать задачи в репозитории, отличном от того, в котором находится рабочий процесс, замените `${{ github.repository }}` в командах `gh` на имя репозитория, в котором нужны проблемы с напоминанием. Например: `octo-org/octo-repo`.\n\n### Пример рабочего процесса\n\n> \\[!NOTE] В этом примере предполагается, что вы назначаете лицензии через организацию. Аналогичные конечные точки API существуют для корпоративных учетных записей и корпоративных команд. См [. раздел AUTOTITLE](/ru/rest/copilot/copilot-user-management).\n\n<!-- markdownlint-disable GHD021 -->\n\n```yaml annotate\n# Name your workflow\nname: Remind inactive users about GitHub Copilot license\n\non:\n  # Run on demand (enables `Run workflow` button on the Actions tab to easily trigger a run manually)\n  workflow_dispatch:\n  # Run the workflow every day at 8am UTC\n  schedule:\n    - cron: '0 8 * * *'\n\njobs:\n  context-log:\n    runs-on: ubuntu-latest\n\n    # Modify the default permissions granted to GITHUB_TOKEN\n    permissions:\n      contents: read\n      issues: write\n\n    steps:\n      - name: Check last GitHub Copilot activity\n        id: check-last-activity\n        run: |\n          # List all GitHub Copilot seat assignments for an organization\n          RESPONSE=$(gh api \\\n            -H \"Accept: application/vnd.github+json\" \\\n            -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n            -H \"Authorization: Bearer ${{ secrets.COPILOT_LICENSE_READ }}\" \\\n            /orgs/${{ github.repository_owner }}/copilot/billing/seats)\n          echo \"Raw Response from gh api:\"\n          echo \"$RESPONSE\"\n\n          # Parse and check each user's `last_activity_at` and `created_at`\n          echo \"$RESPONSE\" | jq -c '.seats[]' | while read -r seat; do\n            LOGIN=$(echo \"$seat\" | jq -r '.assignee.login')\n            LAST_ACTIVITY=$(echo \"$seat\" | jq -r '.last_activity_at')\n            CREATED_AT=$(echo \"$seat\" | jq -r '.created_at')\n\n            # List all open issues with label `copilot-reminder`\n            EXISTING_ISSUES=$(gh issue list --repo ${{ github.repository }} --assignee $LOGIN --label 'copilot-reminder' --json id)\n\n            # Get last activity date and convert dates to seconds since epoch for comparison\n            if [ \"$LAST_ACTIVITY\" = \"null\" ]; then\n              LAST_ACTIVITY_DATE=$(date -d \"$CREATED_AT\" +%s)\n            else\n              LAST_ACTIVITY_DATE=$(date -d \"$LAST_ACTIVITY\" +%s)\n            fi\n            THIRTY_DAYS_AGO=$(date -d \"30 days ago\" +%s)\n\n            # Create issues for inactive users who don't have an existing open issue\n            if [ \"$LAST_ACTIVITY_DATE\" -lt \"$THIRTY_DAYS_AGO\" ] && [ \"$EXISTING_ISSUES\" = \"[]\" ]; then\n              echo \"User $LOGIN has not been active in the last 30 days. Last activity: $LAST_ACTIVITY\"\n\n              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')\"\n            else\n              echo \"User $LOGIN is active or already has an assigned reminder issue. Last activity: $LAST_ACTIVITY\"\n            fi\n          done\n\n        # Set the GH_TOKEN, required for the 'gh issue' commands\n        env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n```\n\n<!-- markdownlint-enable GHD021 -->\n\n## Дополнительные материалы\n\n* [Свойства данных метрик для GitHub Copilot](/ru/copilot/reference/metrics-data#last_activity_at)\n* [Продвижение внедрения GitHub Copilot в вашей компании](/ru/copilot/tutorials/roll-out-at-scale/enable-developers/drive-adoption)\n* [Отслеживание активации и первоначального использования лицензий с помощью метрик использования Copilot](/ru/copilot/tutorials/roll-out-at-scale/assign-licenses/track-usage-and-adoption)"}