При развертывании GitHub Copilot в бизнесе важно отслеживать, какие пользователи используют свою лицензию Copilot, чтобы вы могли эффективно реагировать, переназначив неиспользуемые лицензии или помогая людям приступить к работе с Copilot.
Список всех назначений мест Copilot можно использовать для конечной точки API организации , чтобы найти дату последнего действия для каждого пользователя, которому назначена лицензия в организации. Затем вы можете автоматически реагировать, отфильтровав пользователей, которые не использовали свою лицензию в течение определенного периода времени и отправив напоминание этим пользователям.
Написание сообщения напоминания
Напоминание о неактивных пользователях должно помочь пользователям получить прошлые распространенные блокировщики внедрения для Copilot. Мы рекомендуем определить конкретные блокировщики для вашей компании, выполнив опросы или интервью разработчиков.
Например, сообщение может содержать сведения и ссылки, чтобы помочь пользователям:
- Установите Copilot в своей среде.
- Настройте Copilot для работы с прокси-сервером или брандмауэром вашей компании.
- Получите большую часть данных Copilot в повседневной работе.
Вы также должны четко сообщить о любых дальнейших действиях, которые вы будете предпринимать, если лицензия продолжает оставаться неиспользуемой, например отзыв лицензии пользователя.
Пример напоминания
В следующем разделе мы будем использовать это сообщение в службе автоматизации, которая создает проблему, назначенную каждому неактивного пользователя.
Мы заметили, что вы не использовали назначенную лицензию для GitHub Copilot в течение 30 дней. Ниже приведены некоторые ресурсы, которые помогут вам приступить к работе:
- Если вы еще не настроили Copilot в вашей среде, см[. раздел AUTOTITLE или Настройка GitHub Copilot для себя](/copilot/troubleshooting-github-copilot/troubleshooting-common-issues-with-github-copilot).
- Рекомендации и рекомендации по началу работы см. в разделе [AUTOTITLE или Рекомендации по использованию GitHub Copilot](/copilot/using-github-copilot/prompt-engineering-for-github-copilot).
- Примеры, связанные с конкретными задачами, см. в разделе Кукбука чата Copilot.
Если вам больше не нужен доступ к Copilot, сообщите нам об этом. Если лицензия остается неактивной в течение более 30 дней, мы отменим ее, чтобы освободить доступ для другого пользователя.
Пример напоминания в 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.
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 дней, а затем создает проблему, назначенную каждому пользователю. Это простой пример, который можно адаптировать в соответствии с вашими потребностями.
Чтобы использовать этот рабочий процесс, выполните указанные ниже действия.
-
Создайте метку в репозитории, где будут созданы проблемы с напоминанием. Вызовите метку
copilot-reminder
. Мы будем использовать эту метку для проверки того, открыта ли проблема с напоминанием для каждого неактивного пользователя.Сведения о создании метки см. в разделе Управление метками.
-
Сохраните сообщение напоминания, например в примере напоминания в Markdown, в качестве переменной GitHub Actions в репозитории или организации. Вызов переменной
COPILOT_REMINDER_MESSAGE
.Сведения о создании переменной см. в разделе Хранение сведений в переменных.
-
Создайте personal access token с разрешением на вызов списка всех назначений мест Copilot для конечной точки API организации . Например, создайте подробный маркер со следующими сведениями:
- Владелец ресурса: организация, в которой вы ищете неактивных пользователей.
- Разрешения организации: GitHub Copilot Business (только для чтения).
Сведения о создании маркера см. в разделе Управление личными маркерами доступа.
-
Сохраните маркер доступа в виде секрета GitHub Actions в репозитории или организации. Вызовите секрет
COPILOT_LICENSE_READ
.Сведения о создании секрета см. в разделе Использование секретов в GitHub Actions.
-
В приведенном ниже примере создайте рабочий процесс в репозитории, в котором необходимо создать проблемы с напоминанием.
Если вы не знакомы с GitHub Actions, см. раздел Краткое руководство по GitHub Actions.
-
В рабочем процессе замените
ORG/REPO
заполнители вgh
командах именем репозитория, в котором необходимо создать проблемы с напоминанием. Например:octo-org/octo-repo
.
Пример рабочего процесса
Note
В этом примере предполагается, что вы назначаете лицензии через организацию. Если вы используете выделенную корпоративную учетную запись для Copilot Business, вам потребуется использовать разные конечные точки API. См . раздел AUTOTITLE.
# 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 }}
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 }}