Saltmarsh Funds は架空の投資信託会社です。6日前に変更されたばかりの銀行口座あてに、$20,000 の解約依頼が届いたところです。Saltmarsh のルールでは、このような支払いは、登録されている電話番号に誰かが投資家へ電話をかけるまで保留になります。
今のところ、その電話は順番待ちのチケットです。このガイドが置き換えるのは待ち時間であって、チームではありません。Omni Octo が投資家に予告のテキストを送り、電話をかけ、質問を一つだけして、その答えを、支払いシステムがそのまま処理できる決まった形式の項目として返します。決定は支払いシステムに残り、はっきりしたはい以外の答えは人に回ります。
作り方は、Octo に説明するだけです。この部分では、ドラッグアンドドロップも技術の知識もいりません。こうした仕組みは、普通なら何日もかかります。Octo なら約10分です。自社の支払いシステムを Octo につなぎ、テスト通話をするのに、さらに1時間ほどかかり、その部分はあなたのシステムを変更できる人が必要です。
できあがるもの
ワークフローが一つ、ステップは四つです。
| ステップ | 何が起きるか |
|---|---|
| Webhook 受信 | 支払いシステムが案件を送ります:投資家、金額、ファンド、電話番号 |
| テキスト | 投資家に、あなたの番号から金額と参照番号つきの予告が届きます |
| 電話をかけて待つ | AI エージェントが電話をかけます。ワークフローは、通話が終わり、その分析が出るまで待ちます |
| 署名付きの結果を送信 | 決まった形式の項目を持つ署名付きメッセージが、あなたのシステムに戻ります |
Omni Octo はお金を動かしません。決済の仕組みにはまったくつながっていません。送り返すのは、答えだけです。
はじめる前に:必要なもの
- テキストも電話も使える番号。 ふつうはフリーダイヤル(toll-free)番号を使います。ビジネス用テキスト番号の取得方法をご覧ください。テキストが送信される前に、/phone-numbers でその番号が送信可能と表示されている必要があります。
- 結果の届け先。 POST を受け取って署名を確認できる、支払いシステムまたは運用システム上のアドレスです。
- 両側で共有する署名シークレット。 Octo はシークレットを保持できないので、次のステップであなた自身が保存します。
ステップ1:署名シークレットを保存する
連携 → 連携を追加に進み、Webhook 署名シークレットを選びます。「Saltmarsh payments system」のように、わかりやすい名前を付けます。シークレットを貼り付け、送信側での使われ方で**Webhook ごとに署名する(HMAC)**を選び、保存を押します。
この連携は、このワークフローで二つの役目を果たします。入ってくる案件を確認し、出ていく結果に署名します。
システムのアドレスを手で追加する必要はありません。次のステップで Octo が提案し、あなたが承認するカードに表示されます。
ステップ2:Octo に作ってもらう
Octo と新しい会話を始めて、やりたいことを説明します。下の最初の段落が依頼です。詳細は、Octo が項目名を推測しなくて済むように付けています。
Saltmarsh Funds(投資信託の会社)の折り返し確認ラインを作って。支払いシステムから案件が届いたら、投資家に予告のテキストを送ってから電話をかけて。名前で投資家本人であることを確認し、依頼の内容を読み上げ、本人の依頼かどうかを聞いて。はいなら今日支払い。いいえ、わからない、または人と話したい場合は保留にし、不正対策の担当者が一時間以内に電話すると伝えて。そのあと結果を支払いシステムに返して。
詳細
- ワークフローは一つ。 トリガー:連携「Saltmarsh payments system」で
X-Signature-256を検証する webhook。案件はこんな形:{"case_id":"SF-20931","investor_name":"Jordan Lee","fund":"Saltmarsh Growth Fund","amount":"$20,000","bank_last4":"7731","bank_changed_on":"October 27","phone":"+1…"}- テキスト、そのあと電話。うちのフリーダイヤル番号から。テキスト:「Saltmarsh Funds:今からこの番号で、{amount} の解約依頼(参照番号 {case_id})についてお電話します。パスワードをお聞きすることは絶対にありません。」通話が終わるまで待ち(上限10分)、通話に案件番号を持たせて。同じ案件番号でも、案件ごとに必ず新しく電話をかけて。両方のステップでサイレント時間を有効に。
- エージェント: 名前を含まない無難な挨拶。最初の質問:「{investor_name} 様でいらっしゃいますか。」違う場合は、お詫びして、何も伝えずに通話を終了。本人なら、金額、ファンド、銀行口座の末尾、銀行情報が変更された日付を読み上げて、「この依頼はご本人によるものですか。」と聞く。参照番号を伝え、お別れを言って、自分から通話を終了。パスワード、口座番号、社会保障番号は絶対に聞かない。金融の助言はしない。
- 対話インサイトをエージェントに。項目はこの通りにして:
case_id(テキスト)、outcome(released または held)、request_recognized(yes、no、unsure)、hold_reason(none、not_recognized、wants_specialist、no_answer)、summary。- 通話のあと、同じワークフロー内で:
https://payments.saltmarsh.example/hooks/octoに、これらの項目と通話のステータスを署名付きの POST で送って。通話に応答がなかった場合やスキップされた場合は、outcome: "held"とhold_reason: "no_answer"を送って。- そのアドレスを連携で承認し、検証して、ワークフローは無効のままにして、webhook のアドレスを教えて。
Octo は、この一つのメッセージから、エージェント、対話インサイト、ワークフローを作ります。タイムゾーンや、通話可能時間の外の電話をどうするかを聞かれることもあります。
Octo は、何かを作る、承認する、オンにする前に、必ず手を止めて確認します。 カードを一枚ずつ読んで確認してください。アドレスを承認のカードも同じです。このカードが、ワークフローがあなたのシステムに送信できる唯一の入口です。
ステップ3:システムをつなぐ
Octo が webhook のアドレスを教えてくれます。ワークフローの概要タブにある webhookエンドポイントカードでも確認でき、コピーボタンと状態が表示されます。
- 準備完了:公開中で、署名シークレットも保存済み
- 無効:まだオンになっていないため、システムからのメッセージは拒否されます
- 設定が未完了:まだ足りないものがあります
支払いシステムを設定して、保留になった案件をそのアドレスに POST するようにします。署名には、ステップ1のシークレットを使います。そのあと、Octo に「有効にして」と伝えます。
ステップ4:自分の電話でテスト
自分の番号を入れたテスト案件を送り、電話に出て、投資家が答えそうなすべての返事を試します。
| あなたの返事 | エージェントが言うこと | システムに届くもの |
|---|---|---|
| 「はい、私です」 | 今日支払われること、そして参照番号 | released、yes、none |
| 「いいえ、そんな依頼はしていません」 | 保留になり、不正対策の担当者が一時間以内に電話すること | held、no、not_recognized |
| 「人と話せますか」 | 同じ保留のメッセージ | held、wants_specialist |
| 留守番電話につなぐ | 案件については何も言わない | held、no_answer |
結果は、通話が終わって分析が出てから数秒後に届きます。
通話可能時間の外でテストしたいですか。サイレント時間はオフにしないでください。Octo に、自分の番号あてにワークフローを一度だけ実行するよう頼みます。その実行は自分にしか電話をかけられず、設定はそのままです。その実行でもテキストはスキップされるので、テキストは通話可能時間内にテストしてください。
おかしいと思ったら、Octo に直近の実行を見せて説明するよう頼んでください。各ステップとその結果は、ワークフローの実行でも見られます。
このガイドとビデオに出てくるコンソール
支払いチームの席から見るとどうなるかを示すために、小さな運用コンソールを作りました。これはあなた自身のシステムの代わりです。Saltmarsh Funds は架空で、案件も人物も架空です。実際の画面は、POST を送って署名を確認できるものなら何でもかまいません。
ボタンを押すと、案件がワークフローの webhook アドレスに送られるだけです。支払いシステムは、支払いを検知した時点で、誰も何も押さなくても、同じ案件を自分で送ることができます。
案件が返ってくる結果は、次の三つです。三つとも、コンソールは項目を読む前に署名を確認します。
投資家が依頼をしていない。 支払いは保留のままで、案件は不正対策チームに回ります。
投資家が確認した。 システムは支払いを解除できます。
誰も出なかった。 留守番電話は応答なしとして扱うので、お金はそのままです。
戻ってくるもの
結果は書き起こしではありません。あなたが名前を付けた項目に、署名を付けたものです。
{
"case_id": "SF-20931",
"outcome": "held",
"request_recognized": "no",
"hold_reason": "not_recognized",
"summary": "投資家はこの依頼をしておらず、銀行口座も変更していません。不正対策の担当者が一時間以内に電話すると伝えました。",
"status": "completed"
}
ほかの何よりも先に、署名を確認してください。そのうえで、outcome: "released" 以外はすべて保留として扱ってください。 項目が欠けている場合や、結果がまったく届かない場合も同じです。失敗したワークフローは、お金を元の場所に残すべきです。
これらの項目は対話インサイトなので、通話そのものでも見られます。会話で通話を開くと、全文の書き起こしの隣に対話インサイトがあります。不正対策の担当者が、折り返す前に読むのはこれです。
人を関わらせ続ける
人が関わるのは三か所です。
- 公開する前。 Octo は、誰かが確認したカードなしには、何も作らず、何もオンにしません。
- はっきりしたはい以外の通話のあと。 システムは、保留になった案件を不正対策チームに回します。投資家には担当者が電話すると伝えてあるので、誰かが電話しなければなりません。
- 解除の前(希望する場合)。 Octo に、通話のあとに承認ステップを加えるよう頼みます。ワークフローはそこで待ち、指名された承認者が、ワークフローの実行ページで承認か却下を答えます。金額が大きいときは、その一分をかける価値があります。
変更したい内容を説明して、ワークフローを変えることもできます。たとえば「解約が保留になったら、案件番号、理由、要約を添えて不正対策の窓口にもメールして」のように。
これができないこと
- 本人確認ではありません。 エージェントは、案件に書かれた本人と話しているかを尋ね、その返事を信じます。これが折り返しになるのは、登録されている番号に電話をかけるからです。依頼と一緒に届いた番号には電話をかけないでください。
- 答えは通話中ではなく、通話のあとに届きます。 通話が終わって分析されるまで、システムには何も届きません。
- 通話可能時間が適用されます。 初期設定では、両方のステップが通話可能時間を守ります。投資家の国のすべてのタイムゾーンで午前9時から午後8時までで、米国とカナダでは、冬は太平洋時間の午前9時から午後4時になります。その時間外では、ステップは延期ではなくスキップされるので、案件は
no_answerとして戻ります。 - 留守番電話は応答なしとして扱われ、
no_answerとして戻ります。エージェントは、案件の詳細をメッセージに残してはいけません。 - 項目は、AI が会話を読み取った結果です。 たいていは正しいですが、間違うこともあります。だから、はっきりしたはい以外は保留になり、承認ステップがあるのです。
- エージェントの台本は指示です。 「パスワードは絶対に聞かない」は、エージェントに伝え、自分の通話でテストするものであって、技術的な遮断ではありません。
- テキストへの返信は、その番号に応答するエージェントに届きます。 公開する前に確認してください。返信を確認用エージェントか人に回すよう Octo に頼まないと、投資家の「本当にあなたですか」が、一般のサポート用エージェントに届くかもしれません。