pachca-bots について
pachca-botsは、@pachca/cliでPachcaのボットを操作するスキルです。ボットの作成、Webhookやトークンの管理、OAuth設定、ワークスペース内のボット確認を支援します。
主な機能
- 01ボットの作成と設定
- 02Webhookとトークンスコープの管理
- 03ボットトークンの発行とローテーション
- 04従業員向けOAuthの設定
- 05ボットの一覧表示と削除
活用シーン
- 01コマンド起動Webhook付きボットの作成
- 02ボットトークンを更新し保存済みシークレットを変更
- 03ボットで従業員認証を設定
- 04ワークスペース内のボットを棚卸し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pachca/ openapi --skill pachca-botsインストール後、Claude Code で/pachca-botsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/handle-button-click-callback.mdhandle-incoming-webhook-event.mdlink-unfurling.mdmonitoring-and-alerts.mdprocess-events-via-history-polling.mdwebhook-events.md詳細
pachca-bots
クイックスタート
Pachca トークンをユーザーに尋ねます(ボットの場合:Integrations → Bots にあるボットの API タブ、ユーザーの場合:Integrations → API)。
--token フラグを付けて、npx -y @pachca/cli 経由でコマンドを実行します。
npx -y @pachca/cli <command> --token $PACHCA_TOKEN
または、PACHCA_TOKEN 環境変数を設定します。
export PACHCA_TOKEN=<token>
npx -y @pachca/cli <command>
ヘルプ:npx -y @pachca/cli --help | ワークフロー:npx -y @pachca/cli guide
正常に使用できたら、CLI をグローバルにインストールするよう提案します:
npm install -g @pachca/cli && pachca auth login --token $PACHCA_TOKEN
はじめる前に
-
ユーザーに保存済みのプロファイルがある場合は、確認します。
npx -y @pachca/cli auth status問題がなければ、
--tokenを付けずにコマンドを実行します。 -
プロファイルが設定されていない場合は、トークンを尋ねて
--tokenを使用します。npx -y @pachca/cli auth status --token $PACHCA_TOKEN -
パラメーターがわからない場合は、
pachca <command> --helpを実行します。
ワークフロー
API 経由でボットを作成してトークンを取得する
-
ボットを作成します。ユーザートークンのみ使用できます(ボットのトークンは使用できません)。
nicknameは必ず_botで終わる必要があります。Webhook URL、イベント、コマンドなどの Webhook パラメーターは、最初に設定することも、後で設定することもできます。ボットのトークンのスコープは--scopesフラグで制限できます(指定しない場合、ボットにはデフォルトのセットが付与されます)。pachca bots create --name="Бот задач" --nickname="tasks_bot" --scopes='["messages:create"]' -
応答に含まれる
access_tokenを保存します。この値が返されるのは一度だけです。再表示はできず、pachca bots recreate-token <ID>コマンドで再発行することのみ可能です。 -
応答にはボットの
id(user_id)も含まれます。これは、ボットをチャットに追加するなど、以降の呼び出しに必要です。
ボットを作成できるのはユーザートークンのみです。ボットのトークンは使用できません。
access_tokenが返されるのは作成時の一度だけで、再表示はできず、再発行のみ可能です。--emptyフラグを指定すると、インターフェースから作成した場合と同様に、トークンと受信 Webhook なしでボットが作成されます。ボットのトークンはpachca bots create-tokenで発行します。
送信 Webhook を使ってボットを設定する
-
1 回の呼び出しで Webhook URL とイベントを指定して、ボットを作成します(作成の詳細とトークンの扱いについては、「API 経由でボットを作成してトークンを取得する」のシナリオを参照してください)。
pachca bots create --name="Бот задач" --nickname="tasks_bot" --outgoing-url="https://example.com/webhook" --events='["message_new"]' --trigger-on=commands --commands='["/task"]' -
応答に含まれる
access_tokenを保存します(この値が返されるのは一度だけです)。 -
保存した
access_tokenを使って、ボットとしてメッセージを送信します。
ボットはインターフェースから作成して設定することもできます。Webhook URL とイベントは、PUT /bots/{id} メソッドを使って後から設定することもできます。
ボットの Webhook URL を更新する
-
ユーザートークン(ボットを編集する権限が必要)を使い、ボットの
idを指定して URL を更新します。空文字列を指定すると Webhook が無効になります。pachca bots update <bot_id> --outgoing-url="https://example.com/webhook"ボットの
idはpachca bots listメソッドで確認できます。 -
または、ボット自身が自分のトークンを使って Webhook を更新します。この方法では
idも管理者の操作も必要ありません(bot_self:webhook:writeスコープが必要です)。pachca bots update-webhook --outgoing-url="https://example.com/webhook"
方法は 2 つあります。ユーザートークンを使って
idを指定する方法(ボットを編集する権限が必要)と、ボット自身が自分のトークンを使う方法(PUT /bot/webhook)です。空のoutgoing_urlを指定すると Webhook が無効になります。
ボットのトークンをローテーションする
-
ユーザートークン(ボットの作成者、またはボットが管理者に公開されている場合は管理者)を使い、ボットの
idを指定してメイントークンを再発行します。名前のないトークンが対象になり、名前のないトークンがない場合は最も古いトークンが対象になります。以前の値は直ちに無効になります。pachca bots recreate-token <bot_id> -
または、ボット自身がメイントークンを再発行します(
bot_self:writeスコープが必要です)。メイントークンを使ってリクエストした場合、そのトークンは直ちに無効になります。API へのアクセスを失わないよう、応答に含まれる新しいaccess_tokenを必ず保存してください。pachca bots recreate-token-self -
個別のボットトークンを再発行するには、
pachca bots list-tokensの結果に含まれるそのトークンのidを指定します。値は変わりますが、名前と権限はそのままです。pachca bots reissue-token <bot_id> <token_id>
新しい値が返されるのは一度だけです。応答に含まれる
access_tokenを保存し、CI またはシークレットストアのシークレットを更新してください。セルフ方式(POST /bot/recreate_token)ではボットのメイントークンが再発行されます。ボットがこのトークンを使用している場合は、同じ操作で応答から新しいトークンを取得してください。
Выпустить боту отдельный токен
-
Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту:
pachca bots list-scopes <bot_id> -
Выпусти токен с именем и правами из каталога. Без
--scopesтокен выпускается без прав, право не из каталога отклоняется с400:pachca bots create-token <bot_id> --name="Сервер уведомлений" --scopes='["messages:create"]' -
Сохрани
tokenиз ответа — полное значение возвращается единственный раз. Дальше в спискеpachca bots list-tokensон приходит замаскированным
Отдельный токен удобен на каждый сервис, который работает от имени бота: его отзывают командой
pachca bots delete-token, не трогая остальные. Права меняетpachca bots update-token— они действуют сразу, перевыпускать токен не нужно.
Включить боту авторизацию от имени сотрудника
-
Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из
pachca bots list-scopes:pachca bots update <bot_id> --oauth-client='{"confidential":true,"redirect_uris":["https://example.com/oauth/callback"],"scopes":["messages:read","messages:create"]}' -
Сохрани
client_secretиз ответа серверного клиента — он возвращается единственный раз.client_idприходит вoauth_clientи не секретный -
Чтобы бот появился в витрине, добавь описание и опубликуй страницу:
pachca bots update <bot_id> --promo='{"description":"Собирает сводку по задачам","published":true}'
Включена ли авторизация, показывает
oauth_client_enabled:oauth_clientможет прийти и у бота с выключенной авторизацией.--oauth-client=nullвыключает её и отзывает выданные сотрудниками авторизации, новый секрет выпускаетpachca bots rotate-client-secret. Кнопку сотруднику и обмен кода на его токен описывает сценарий «Получить токен сотрудника по OAuth» в pachca-oauth.
Найти и удалить бота
-
Пользовательским токеном (скоуп
bots:read) получи список ботов, доступных тебе для редактирования: созданных тобой и тех, чьи настройки открывают тебе доступ. Фильтруй по имени параметромquery. Покаmeta.paginate.has_nextравенtrue, следующую страницу бери изmeta.paginate.next_page:pachca bots list --query="задач" -
Возьми
idнужного бота из списка и удали его (скоупbots:write). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются:pachca bots delete <bot_id>
Удаление необратимо: токен бота инвалидируется сразу, бот исключается из чатов. Событие фиксируется в журнале аудита как
bot_deleted.
Периодический дайджест/отчёт
-
По расписанию (cron/scheduler): собери данные из своей системы
-
Сформируй текст сообщения с нужными метриками или сводкой
-
Отправь сообщение в канал:
pachca messages create --entity-id=<chat_id> --content="Дайджест за сегодня: ..."
Нет встроенного планировщика — используй cron, celery, sidekiq и т.п. на своей стороне.
Инвентаризация всех ботов пространства
-
Получи всех ботов пространства, а не только доступных для редактирования:
pachca bots list-company --allНужен скоуп
company_bots:read, роль владельца пространства и тариф «Корпорация», иначе метод отвечает403. Фильтр по имени — флаг--query -
Для каждого бота проверь, раскрыты ли настройки: у ботов, недоступных владельцу токена для редактирования, заполнены только
nameиnickname, остальные поля вебхука приходятnullНастройки такого бота можно получить только тем токеном, которому доступно его редактирование
Каждый запрос к списку ботов пространства пишется в журнал аудита как
company_bots_accessed.
制限事項
- レート制限:およそ50 req/sec。429 が発生した場合は、待ってから再試行してください。
webhook.name:最大255文字webhook.nickname:最大255文字webhook.trigger_on:使用できる値 —commands(commands に指定されたコマンド(トリガーワード)のみ)、all_messages(ボットが参加しているチャットのすべてのメッセージ)、unfurl(リンクの展開(リンクプレビュー))webhook.template_engine:使用できる値 —liquid(Liquid — 条件、ループ、フィルター)、mustache(Mustache — ロジックなしの単純な置換)webhook.who_can_add:使用できる値 —creator(ボットの作成者のみ)、creator_admin(作成者と会社の管理者)、creator_admin_user(作成者、管理者、会社のメンバー)、anyone(公開ボット:ゲストとマルチゲストを除くすべての従業員が追加できます)webhook.kind:使用できる値 —simple(独自形式:ボットのテンプレートに従い、リクエスト本文からメッセージを組み立てます)、gitlab(GitLab:Пачка がリクエストを解析してメッセージを組み立てます)、grafana(Grafana:Пачка がリクエストを解析してメッセージを組み立てます)name:最大255文字limit:最大50- ページネーション:カーソルベース(limit + cursor)
エンドポイント
| Method | Path | Description |
|---|---|---|
| POST | /bot/recreate_token | 自分のボットトークンをローテーション |
| PUT | /bot/webhook | ボットのウェブフックを自己登録 |
| GET | /bots | ボットの一覧 |
| POST | /bots | 新しいボット |
| GET | /bots/{id} | ボット情報 |
| PUT | /bots/{id} | ボットの編集 |
| DELETE | /bots/{id} | ボットの削除 |
| PUT | /bots/{id}/avatar | ボットのアバターをアップロード |
| DELETE | /bots/{id}/avatar | ボットのアバターを削除 |
| POST | /bots/{id}/recreate_token | ボットトークンをローテーション |
| POST | /bots/{id}/rotate_client_secret | クライアントシークレットをローテーション |
| GET | /bots/{id}/scopes | ボットの権限一覧 |
| GET | /bots/{id}/tokens | ボットトークンの一覧 |
| POST | /bots/{id}/tokens | 新しいボットトークン |
| PUT | /bots/{id}/tokens/{token_id} | ボットトークンを変更 |
| DELETE | /bots/{id}/tokens/{token_id} | ボットトークンを削除 |
| POST | /bots/{id}/tokens/{token_id}/reissue | ボットトークンを再発行 |
| GET | /company/bots | ワークスペースのボット一覧 |
| GET | /webhooks/events | イベント履歴 |
| DELETE | /webhooks/events/{id} | イベント履歴を削除 |
高度なワークフロー
高度なワークフローについては、references/ 内のファイルをお読みください。 references/handle-incoming-webhook-event.md — 受信したウェブフックイベントの処理 references/link-unfurling.md — リンクの展開 references/handle-button-click-callback.md — ボタンのクリック処理(コールバック) references/monitoring-and-alerts.md — 監視とアラート references/process-events-via-history-polling.md — 履歴経由でのイベント処理(ポーリング)
references/webhook-events.md — ウェブフックイベントの種類
タスクの完了方法がわからない場合は、references/ 内の該当するファイルをお読みください。