コンテンツにスキップ

会話中に AI エージェントができること。組み込みの Quickchat AI Actions と、自社 API・MCP サーバー・Google Sheets などのショートカットを呼び出すカスタムアクションを説明します。

会話中に AI エージェントが実行できることを定義します。リアルタイム API データを使った回答、リード情報の収集、カスタム処理の実行まで対応できます。

Quickchat AI エージェントのアクションには 2 種類あります。

Quickchat AI Actions は組み込み済みで、オンにして設定するだけです。

カスタムアクション は Quickchat AI の外部にアクセスします。

  • API アクション は任意の HTTP エンドポイントを呼び出します。このページで説明します。
  • MCP アクション は MCP サーバー全体を一度に接続します。
  • Google Sheets はワンクリックでログ記録用アクションを用意するショートカットです。

すべてのアクションは AI Action Variables を通じて会話中のデータを参照できます。Jira の例 では、アクションを最初から最後まで作成します。

会話中に外部 API を呼び出せます。社内検索、チケット作成、通知、ナレッジ外の最新データ取得などに有効です。Actions & MCPsCustom Actions にあります。

  1. アクションの種類を選びます: APIアクション、MCP、HubSpotアクション、Discordアクション、Google Sheets、Shopify MCP。接続と、AI に必要な指示を設定します。
  2. 会話中、通常は AI がアクションの説明と利用可能なツールまたはパラメータの詳細を使って、実行するタイミングを判断します。API Action は、代わりに最初の返信前、またはメタデータ条件が初めて一致したときに自動実行するよう設定できます。
  3. Quickchat が呼び出しを実行します。AI が選択した Action、または最初の返信前に実行される Action では、AI がレスポンスを利用できます。メタデータによってトリガーされる Action はサイレントに実行され、その出力はチャットに追加されません。
  4. 会話で使用する前に、アクションのエディターでテストまたは接続を行います。
  1. Actions & MCPs を開く。
  2. Custom Actions+API Action
  3. Details
    • Name:明快で説明的に
    • Description:使用条件とパラメータ記入の指針
  4. 実行するタイミングAIが判断最初の返信前メタデータが一致したとき のいずれかを選択します。
  5. Connection
    • Action Type:HTTP メソッド(GET、POST など)
    • Action endpoint URL:完全な URL
    • HeadersAuthorizationcontent-type: application/json など必要最小限
  6. Parameters:name / location(query, body, header)/ description を定義。path はパラメータの location ではなく、{{placeholder}} テンプレートでエンドポイント URL に直接埋め込みます。
  7. Test request → 応答確認 → Done

リクエスト本体以外にも、API Action には知っておくと役立つ任意の設定が 3 つあります: Save to memoryRun only whenResponse filter

API Action の実行タイミングを選ぶ

Section titled “API Action の実行タイミングを選ぶ”

実行するタイミング で、次の 3 つのモードから選択します。

このセクションはデフォルトで折りたたまれており、見出しの横に現在のモードが表示されます。モードを変更するには展開してください。

展開した「実行するタイミング」セクション。AIが判断、最初の返信前、メタデータが一致したとき の 3 つのモードが表示されている

  • AIが判断:デフォルトです。AI が Action の説明を読み、訪問者の依頼に Action が必要かどうかを判断します。特定の質問に対してのみ Action を実行する場合や、AI が訪問者から情報を収集した後に実行する場合に使用します。
  • 最初の返信前:訪問者が最初のメッセージを送信した後、AI が最初の返信を作成する前に、Quickchat が Action を 1 回実行します。通常の AI 返信には、API レスポンスと Save to memory で保存した値が渡されます。この Action は AI がツールとして選択できなくなるため、最初のターンでのみ実行され、会話の後半で再度実行されることはありません。顧客の識別、アカウント情報の取得、権限の確認など、実際に始まったすべての会話で必要な初期処理に使用します。
  • メタデータが一致したとき:Quickchat は各 AI ターンの後に Action の 次の場合に実行 条件を確認し、すべての条件が初めて一致したときに実行します。同じターン中に別の Action が Save to memory で保存した値もすぐに使用できます。AI はこの Action をツールとして選択できず、そのレスポンスはチャットに追加されません。会話データが利用可能になったときに自動的に行う必要がある社内通知、CRM の更新、フォローアップリクエストに使用します。

最初の返信前 は会話の作成時ではなく、訪問者の最初のメッセージを基準にします。チャットを開いたりウェルカムメッセージを受信したりするだけでは実行されないため、放棄されたチャットからリクエストは送信されません。Quickchat はエンドポイントを呼び出す前に実行を記録します。そのため、リクエストが失敗した場合や結果が不明な場合でも、同じ会話では再試行されません。

最初の返信はリクエストの完了を待つため、このモードでは待ち時間が長くなる場合があります。複数の Action がこのモードを使用する場合は順番に実行され、各リクエストの所要時間が加算されます。必要なメタデータがない場合、エンドポイントが利用できない場合、またはリクエストが失敗した場合でも、AI は返信します。詳細は Action の リクエストログ を開いて確認してください。

Action は AI がパラメータ値を選択する前に実行されるため、使用するすべての AI パラメータにデフォルト値が必要です。メタデータと組み込み変数は、URL、ヘッダー、query、body に直接挿入できます。

メタデータが一致したとき では、次の場合に実行 条件を少なくとも 1 つ設定し、すべての AI パラメータにデフォルト値を指定する必要があります。Quickchat はエンドポイントを呼び出す前に実行の試行を記録するため、リクエストがいったん送信されると、成功しても失敗しても結果が不明でも、同じ会話では再試行しません。必要な値がまだそろわずリクエストを組み立てられなかった場合は記録されず、後のターンで再び対象になります。Action は AI がターンを終えた直後に実行されるため、失敗しても AI の返信が置き換わることはありません。返信をストリーミングしないチャネルでは、リクエストの往復時間が訪問者の待ち時間に加わります。

メタデータが一致したとき を選ぶと、同じセクション内に 次の場合に実行 のエディタが表示され、トリガーと条件をまとめて確認できます。

「実行するタイミング」を「メタデータが一致したとき」に設定した状態。「次の場合に実行」に escalation_flag is true と order_id exists の 2 つの条件がある

HubSpotアクションでは、接続済みの HubSpot アカウントを使用する、入力済みで編集可能な API Action のギャラリーを利用できます。

「HubSpot CRM Actions」ギャラリー。「Tickets」の下に「Add Note to Ticket」がある

チケットにメモを追加テンプレートは、会話に紐づいた HubSpot チケットに非公開のメモを作成します。メモの内容を hubspot_note_body として会話メモリに保存してから、テンプレートを追加して有効化します。このテンプレートでは メタデータが一致したとき があらかじめ設定されており、hubspot_note_body と Quickchat がサーバー側で提供する hubspot_ticket_id の両方が存在するまで待機します。note_body パラメータのデフォルト値を編集すると、{{metadata_hubspot_note_body}} の前後に固定テキストを追加できます。

このメモは HubSpot 内部専用で、訪問者には表示されません。テンプレートは Quickchat の会話ごとに 1 回だけリクエストを試行します。配信の確認や失敗したリクエストの調査には、Action の リクエストログ を開いてください。

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 機能を使用してデータを渡します。

  1. open_support_ticket は選択したチャンネルにプライベートスレッドを作成し、$.id を取得して discord_ticket_thread_id として会話メモリに保存します。discord_message is true が必須で、選択したサーバーで、そのメモリキーが存在しない場合にのみ実行されます。
  2. add_ticket_requester{{metadata_discord_ticket_thread_id}} と、Discord が提供する {{metadata_discord_author_id}} を読み取ります。discord_message is true が必須で、スレッド ID が存在する場合に、選択したサーバーでのみ実行されます。
  3. 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 ChannelsSend MessagesRead Message HistoryCreate Private ThreadsSend Messages in ThreadsManage Threads を付与してください。ロールをメンションしない場合は、ロールに通知(任意)ロールに通知しないに設定してください。ロールを選択した場合は、そのロールをメンション可能にし、そのメンバーがプライベートスレッドにアクセスできるようにします。ロールを選択しない場合やメンション可能なロールがない場合も、ロールへの通知なしでチケットは通常どおり開かれます。ギャラリーにはテキストチャンネルとメンション可能なロールが表示されますが、チャンネルの権限上書きをすべて検証するわけではありません。

ギャラリーは設定を省力化するもので、追加のポリシーレイヤーではありません。生成された Action を編集する場合やカスタム Discord API Action を作成する場合は、有効化する前に認証情報、対象、パラメータ、レスポンスの公開範囲、次の場合のみ実行の条件を確認してください。

API レスポンスから値を取り出し、任意のキーを付けて会話のメモリに保存します。以降の Action はそれを {{metadata_<key>}} として再利用でき、会話の詳細(Inbox、API、エクスポート)にも表示されます。

ある Action が生成した値を、後続の Action が必要とする場合に使います。検索系の Action がレスポンスから customer_id を保存しておけば、後続の Action は AI に値をコピーさせることなく {{metadata_customer_id}} を送信できます。

API Action エディタの Save to memory セクションで、取り出した値に メモリキー を付け、保存したいレスポンスの該当箇所を指定します。以降は、他と同じメタデータ変数として扱えます。

メモリキーは、エージェントの Remote MCP ツールと共有されます。同じキーを MCP ツールがすでに保存している場合は、保存時に メモリキー の項目で重複が通知されるため、別のキーを指定してください。

API Action エディタの Save to memory セクション

Action を、会話メタデータの条件が満たされたときにのみ 実行されるよう制限します。条件は常にモデルの外側で、Quickchat によって確認されます。AIが判断 または 最初の返信前 では、Quickchat はリクエストを送信する直前に条件を確認します。メタデータが一致したとき では、AI が Action を選択するのを待たず、AI ターンの後に条件自体がリクエストをトリガーします。

これは、権限を要する操作や取り消せない操作(メンバーの BAN、返金、レコードの削除)に適したツールです。プロンプト内の「これは管理者のみ実行可能」という一文は有用な指示ではありますが、セキュリティ境界ではありません。執拗なユーザーはモデルを言いくるめたり、プロンプトインジェクションを試みたりできます。実行条件は決定論的でプロンプトの外側に存在するため、会話で何が言われようとも保持されます。

  • 実行条件が境界です。 サーバー側で評価され、モデルが読むプロンプトには含まれません。これが実際に Action の実行を止めるものです。
  • プロンプトのルールはユーザー体験のためです。 AI が無言になるのではなく丁寧に断り、理由を説明できるよう、プロンプトにも一文を残しておきましょう。

Action エディタの Run only when セクションで条件を追加します。メタデータが一致したとき の Action では、このセクションは 次の場合に実行 と表示されます。Add condition をクリックし、メタデータキー(例: telegram_sender_is_admin)を選び、比較方法を選択します:

条件次の場合に通過します。メタデータの値が…
is truetruthy である
is falsefalsy である
exists会話に存在する
does not exist存在しない
equals指定した値と一致する
does not equal指定した値と異なる

Action は すべて の条件が満たされたときにのみ実行されます。会話に設定されていないキーに対する条件は通過しません。AI が選択した Action が条件によってブロックされた場合、AI はその Action を利用できないことを説明できます。メタデータが一致したとき の Action は、条件が満たされるまで何も出力しません。

telegram_sender_is_admin が true という条件が 1 つ設定された Run only when セクション

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

非管理者の BAN 試行が実行条件によってブロックされる様子: リクエストは送信されず、結果は拒否となる

管理者による同じ BAN リクエスト: 実行条件が通過し、Action は 200 を返す

デフォルトでは、AI は API レスポンス全体 を見ます。Response filter セクションに JSONPath 式を追加すると、AI が見る範囲をその特定の部分だけに限定できます。

フィルターをかける一般的な理由は 2 つあります:

  • 機密フィールドを隠す。 エンドポイントが AI に必要な以上の情報を返す場合に、顧客のメールアドレス、支払い情報、内部 ID をモデルのコンテキストから除外します。
  • プロンプトを小さくする。 冗長な API は大きなペイロードを返すことがあります。重要な数フィールドにフィルターすることで、レスポンスを小さく保ち、AI の焦点を絞ります。

1 つ以上の JSONPath 式を追加すると、AI は一致した部分のみを受け取ります。例えば $.data.items[*].name は、より大きなレスポンスから項目名だけを残します。

API Action エディタの Response filter セクション

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

最終更新日: