会話中に AI エージェントができること。組み込みの Quickchat AI Actions と、自社 API・MCP サーバー・Google Sheets などのショートカットを呼び出すカスタムアクションを説明します。
会話中に AI エージェントが実行できることを定義します。リアルタイム API データを使った回答、リード情報の収集、カスタム処理の実行まで対応できます。
Quickchat AI エージェントのアクションには 2 種類あります。
Quickchat AI Actions は組み込み済みで、オンにして設定するだけです。
- Human Handoff は会話を担当者に引き継ぎます。
- スマートデータ収集 はチャット中にリードなどのデータを収集します。
カスタムアクション は Quickchat AI の外部にアクセスします。
- API アクション は任意の HTTP エンドポイントを呼び出します。このページで説明します。
- MCP アクション は MCP サーバー全体を一度に接続します。
- Google Sheets はワンクリックでログ記録用アクションを用意するショートカットです。
すべてのアクションは AI Action Variables を通じて会話中のデータを参照できます。Jira の例 では、アクションを最初から最後まで作成します。
カスタムアクション
Section titled “カスタムアクション”会話中に外部 API を呼び出せます。社内検索、チケット作成、通知、ナレッジ外の最新データ取得などに有効です。Actions & MCPs → Custom Actions にあります。
- アクションの種類を選びます: APIアクション、MCP、HubSpotアクション、Discordアクション、Google Sheets、Shopify MCP。接続と、AI に必要な指示を設定します。
- 会話中、通常は AI がアクションの説明と利用可能なツールまたはパラメータの詳細を使って、実行するタイミングを判断します。API Action は、代わりに最初の返信前に自動実行するよう設定できます。
- Quickchat が呼び出しを実行し、結果を AI に返します。AI が応答を読み、自然な言葉でユーザーに返答します。
- 会話で使用する前に、アクションのエディターでテストまたは接続を行います。
API アクションの作成
Section titled “API アクションの作成”- Actions & MCPs を開く。
- Custom Actions の + → API Action。
- Details:
- Name:明快で説明的に
- Description:使用条件とパラメータ記入の指針
- 実行するタイミング で AIが判断 または 最初の返信前 を選択します。
- Connection:
- Action Type:HTTP メソッド(GET、POST など)
- Action endpoint URL:完全な URL
- Headers:
Authorizationやcontent-type: application/jsonなど必要最小限
- Parameters:name / location(query, body, header)/ description を定義。path はパラメータの location ではなく、
{{placeholder}}テンプレートでエンドポイント URL に直接埋め込みます。 - Test request → 応答確認 → Done
リクエスト本体以外にも、API Action には知っておくと役立つ任意の設定が 3 つあります: Save to memory、Run only when、Response filter。
API Action の実行タイミングを選ぶ
Section titled “API Action の実行タイミングを選ぶ”実行するタイミング で、次の 2 つのモードから選択します。
- AIが判断:デフォルトです。AI が Action の説明を読み、訪問者の依頼に Action が必要かどうかを判断します。特定の質問に対してのみ Action を実行する場合や、AI が訪問者から情報を収集した後に実行する場合に使用します。
- 最初の返信前:訪問者が最初のメッセージを送信した後、AI が最初の返信を作成する前に、Quickchat が Action を 1 回実行します。通常の AI 返信には、API レスポンスと Save to memory で保存した値が渡されます。この Action は AI がツールとして選択できなくなるため、最初のターンでのみ実行され、会話の後半で再度実行されることはありません。顧客の識別、アカウント情報の取得、権限の確認など、実際に始まったすべての会話で必要な初期処理に使用します。
最初の返信前 は会話の作成時ではなく、訪問者の最初のメッセージを基準にします。チャットを開いたりウェルカムメッセージを受信したりするだけでは実行されないため、放棄されたチャットからリクエストは送信されません。Quickchat はエンドポイントを呼び出す前に実行を記録します。そのため、リクエストが失敗した場合や結果が不明な場合でも、同じ会話では再試行されません。
最初の返信はリクエストの完了を待つため、このモードでは待ち時間が長くなる場合があります。複数の Action がこのモードを使用する場合は順番に実行され、各リクエストの所要時間が加算されます。必要なメタデータがない場合、エンドポイントが利用できない場合、またはリクエストが失敗した場合でも、AI は返信します。詳細は Action の リクエストログ を開いて確認してください。
Action は AI がパラメータ値を選択する前に実行されるため、使用するすべての AI パラメータにデフォルト値が必要です。メタデータと組み込み変数は、URL、ヘッダー、query、body に直接挿入できます。
Discordアクション
Section titled “Discordアクション”Discordアクションでは、入力済みで編集可能な API Action のギャラリーを利用できます。
- サポートとチケット: サポートチケットを開くでは、サーバーとテキストチャンネルを選択します。メンション可能なサポートロールは任意で選択できます。プライベートスレッドを開き、現在の依頼者を追加し、必要に応じてロールをメンションする要約を投稿する 3 つの Action が作成されます。
- モデレーション: メンバーをタイムアウト、メンバーをキック、メンバーをBAN、メンバーのBANを解除、ロールを割り当て、スローモードを設定、アナウンスを送信。各テンプレートは 1 クリックでインストールされ、現在の Discord リクエストに含まれるサーバー、メンバー、ロール、チャンネルを使用します。
Quickchat は HTTP メソッド、URL、ヘッダー、body、パラメータ、説明、レスポンス設定、実行条件を backend で作成します。作成されたカードは通常の HTTP Request Action です。すべてのフィールドを確認して編集できます。
7 つのモデレーションテンプレートにはすべて、次の場合のみ実行に author_is_admin is true が含まれます。Discord が現在の送信者の Administrator 権限を計算し、Discord gateway がその値を渡し、Quickchat がリクエスト送信前に確認します。公開チャットと API メタデータからこのキーを設定することはできません。Discord 上で管理者アカウントと管理者ではないアカウントの両方を使ってモデレーション Action をテストしてください。AI Preview では認可済みの Discord 送信者を利用できません。
Bot 自体には、各リクエストに必要な Discord 権限が引き続き必要です。
| アクション | Bot の権限またはアクセス |
|---|---|
| メンバーをタイムアウト | Moderate Members |
| メンバーをキック | Kick Members |
| メンバーをBAN、メンバーのBANを解除 | Ban Members |
| ロールを割り当て | Manage Roles |
| スローモードを設定 | Manage Channels |
| アナウンスを送信 | View Channels と Send Messages |
Discord はロール階層も適用します。Bot のロールを、管理対象のメンバーやロールより上位に配置してください。テンプレートでは、リクエストした管理者のロール階層や個別の権限を追加で確認しません。
スローモードを設定とアナウンスを送信は、チャンネル ID パラメータを受け取ります。追加の固定対象がない場合、テンプレートはそのチャンネルが管理者のリクエスト元サーバーに属することを検証しません。同じ Bot が複数のサーバーに参加している場合は、これらの Action を固定チャンネル ID を使うよう編集するか、サーバーごとに Agent と Bot の認証情報を分け、別々の信頼境界にしてください。
Support Ticket のインストールでは、既存の Action 機能を使用してデータを渡します。
open_support_ticketは選択したチャンネルにプライベートスレッドを作成し、$.idを取得してdiscord_ticket_thread_idとして会話メモリに保存します。discord_message is trueが必須で、選択したサーバーで、そのメモリキーが存在しない場合にのみ実行されます。add_ticket_requesterは{{metadata_discord_ticket_thread_id}}と、Discord が提供する{{metadata_discord_author_id}}を読み取ります。discord_message is trueが必須で、スレッド ID が存在する場合に、選択したサーバーでのみ実行されます。post_in_ticketは同じ保存済みスレッド ID を読み取り、Agent が作成した問題の 1 行要約を投稿して、依頼者をメンションします。サポートロールを選択した場合は、そのロールもメンションします。Discord メッセージ、サーバー、保存済みスレッドについて同じ条件が設定されています。Discord のリクエスト body にあるallowed_mentionsは、依頼者と、設定されている場合はそのロールに限定されます。
説明と Agent のメインプロンプトで、これらの Action をこの順序で実行するよう指示してください。専用のワークフロー状態、ロック、確認、再試行、復旧、照合、replay protection のレイヤーはありません。結果が不明な場合、Discord がすでにリクエストを完了している可能性があるため、再試行する前に Discord と Action ログを確認してください。
discord_ticket_thread_id は自動的に消去されません。そのため、このテンプレートで作成できるチケットは Quickchat の会話ごとに 1 件です。別のチケットには新しい Discord の会話またはスレッドを開始するか、必要なメモリのライフサイクルを追加するよう Action を編集してください。
Support Ticket では、選択したチケットチャンネルで Bot に View Channels、Send Messages、Read Message History、Create Private Threads、Send Messages in Threads、Manage Threads を付与してください。ロールをメンションしない場合は、ロールに通知(任意)をロールに通知しないに設定してください。ロールを選択した場合は、そのロールをメンション可能にし、そのメンバーがプライベートスレッドにアクセスできるようにします。ロールを選択しない場合やメンション可能なロールがない場合も、ロールへの通知なしでチケットは通常どおり開かれます。ギャラリーにはテキストチャンネルとメンション可能なロールが表示されますが、チャンネルの権限上書きをすべて検証するわけではありません。
ギャラリーは設定を省力化するもので、追加のポリシーレイヤーではありません。生成された Action を編集する場合やカスタム Discord API Action を作成する場合は、有効化する前に認証情報、対象、パラメータ、レスポンスの公開範囲、次の場合のみ実行の条件を確認してください。
Save to memory
Section titled “Save to memory”API レスポンスから値を取り出し、任意のキーを付けて会話のメモリに保存します。以降の Action はそれを {{metadata_<key>}} として再利用でき、会話の詳細(Inbox、API、エクスポート)にも表示されます。
ある Action が生成した値を、後続の Action が必要とする場合に使います。検索系の Action がレスポンスから customer_id を保存しておけば、後続の Action は AI に値をコピーさせることなく {{metadata_customer_id}} を送信できます。
API Action エディタの Save to memory セクションで、取り出した値に メモリキー を付け、保存したいレスポンスの該当箇所を指定します。以降は、他と同じメタデータ変数として扱えます。
メモリキーは、エージェントの Remote MCP ツールと共有されます。同じキーを MCP ツールがすでに保存している場合は、保存時に メモリキー の項目で重複が通知されるため、別のキーを指定してください。

Run only when
Section titled “Run only when”Action を、会話メタデータの条件が満たされたときにのみ 実行されるよう制限します。条件は、AI が Action の呼び出しを決定した後、リクエストが送信される前に、こちら側で、呼び出し時に チェックされるため、チャットからは回避できません。
これは、権限を要する操作や取り消せない操作(メンバーの BAN、返金、レコードの削除)に適したツールです。プロンプト内の「これは管理者のみ実行可能」という一文は有用な指示ではありますが、セキュリティ境界ではありません。執拗なユーザーはモデルを言いくるめたり、プロンプトインジェクションを試みたりできます。実行条件は決定論的でプロンプトの外側に存在するため、会話で何が言われようとも保持されます。
- 実行条件が境界です。 サーバー側で評価され、モデルが読むプロンプトには含まれません。これが実際に Action の実行を止めるものです。
- プロンプトのルールはユーザー体験のためです。 AI が無言になるのではなく丁寧に断り、理由を説明できるよう、プロンプトにも一文を残しておきましょう。
Action エディタの Run only when セクションで条件を追加します。Add condition をクリックし、メタデータキー(例: telegram_sender_is_admin)を選び、比較方法を選択します:
| 条件 | 次の場合に通過します。メタデータの値が… |
|---|---|
| is true | truthy である |
| is false | falsy である |
| exists | 会話に存在する |
| does not exist | 存在しない |
| equals | 指定した値と一致する |
| does not equal | 指定した値と異なる |
Action は すべて の条件が満たされたときにのみ実行されます。会話に設定されていないキーに対する条件は通過しません。

条件が満たされない場合、リクエストは送信されず、AI はユーザーにそれができない旨を伝えます。以下では、同じ BAN リクエストが、非管理者に対してはブロックされ、管理者に対しては許可されています。変わっているのは誰が依頼しているかだけです:


Response filter
Section titled “Response filter”デフォルトでは、AI は API レスポンス全体 を見ます。Response filter セクションに JSONPath 式を追加すると、AI が見る範囲をその特定の部分だけに限定できます。
フィルターをかける一般的な理由は 2 つあります:
- 機密フィールドを隠す。 エンドポイントが AI に必要な以上の情報を返す場合に、顧客のメールアドレス、支払い情報、内部 ID をモデルのコンテキストから除外します。
- プロンプトを小さくする。 冗長な API は大きなペイロードを返すことがあります。重要な数フィールドにフィルターすることで、レスポンスを小さく保ち、AI の焦点を絞ります。
1 つ以上の JSONPath 式を追加すると、AI は一致した部分のみを受け取ります。例えば $.data.items[*].name は、より大きなレスポンスから項目名だけを残します。

ベストプラクティス
Section titled “ベストプラクティス”- 説明は具体的に:使用条件と各パラメータの意味を明確に。
- スコープ最小化:必要なヘッダー・トークンのみ。
- 展開前にテスト:ステータスコードとペイロードを確認。