メインコンテンツまでスキップ

REFERENCE

開発者リファレンス

認証、API、SDK、Flow Agent のプロセッサ、パラメータ解決のリファレンスです。

asgard.message.delta

asgard.message.delta のイベントは、メッセージの内容をストリーミングで送るためのものです。各イベントには短いテキストが入っており、idx フィールドで正しい順序を保ちます。

  1. イベントの性質​

    • 発火のタイミング: AI が内容を生成しながら、テキストの断片を小分けに送るとき
    • 役割: リアルタイムのタイプライター風の表示を実現し、体験を良くする
    • 頻度: ひとつのメッセージに複数の delta イベントが出ることがあります
  2. 重要なフィールド​

    フィールド説明
    messageDelta.message.text追加分のテキスト。新しく加わった断片(文字、語句、文のいずれか)
    messageDelta.message.idx順序のインデックス。0 から始まって増えます
    messageDelta.message.template通常は null で、complete のイベントで値が入ります
  3. 完全な例​

    次の例は、ひとつのメッセージが完成するまでのタイプライター風の流れです。AI が返す一文は複数の delta イベントに分かれて送られます(文字、語句、文のいずれかの単位)。

    Delta 1 (idx: 0) - 1 つ目の断片​

    {
    "eventType": "asgard.message.delta",
    "requestId": "6939c5a6c590d90c401e3850a1ff44f3",
    "namespace": "qa-7e301310-a594-4a7b-aa2a-xxxxxxxxxxxx",
    "botProviderName": "bpapi-d97c512f-f8dc-46f6-82f0-xxxxxxxxxxxx",
    "customChannelId": "ch-6xxxxxxxxxxxx",
    "fact": {
    "runInit": null,
    "runDone": null,
    "runError": null,
    "messageStart": null,
    "messageDelta": {
    "message": {
    "messageId": "1834828082242916352",
    "replyToCustomMessageId": "",
    "text": "目前", // <- 追加分のテキストだけ
    "payload": null,
    "isDebug": false,
    "idx": 0, // <- 1 つ目の断片
    "template": null // <- 通常は null
    }
    },
    "messageComplete": null
    }
    }

    Delta 2 (idx: 1) - 2 つ目の断片​

    {
    "eventType": "asgard.message.delta",
    "requestId": "6939c5a6c590d90c401e3850a1ff44f3",
    "namespace": "qa-7e301310-a594-4a7b-aa2a-xxxxxxxxxxxx",
    "botProviderName": "bpapi-d97c512f-f8dc-46f6-82f0-xxxxxxxxxxxx",
    "customChannelId": "ch-6xxxxxxxxxxxx",
    "fact": {
    "runInit": null,
    "runDone": null,
    "runError": null,
    "messageStart": null,
    "messageDelta": {
    "message": {
    "messageId": "1834828082242916352",
    "replyToCustomMessageId": "",
    "text": "台", // <- 追加分のテキストだけ
    "payload": null,
    "isDebug": false,
    "idx": 1, // <- 2 つ目の断片
    "template": null
    }
    },
    "messageComplete": null
    }
    }

    Delta 3 (idx: 2) - 3 つ目の断片​

    {
    "eventType": "asgard.message.delta",
    "requestId": "6939c5a6c590d90c401e3850a1ff44f3",
    "namespace": "qa-7e301310-a594-4a7b-aa2a-xxxxxxxxxxxx",
    "botProviderName": "bpapi-d97c512f-f8dc-46f6-82f0-xxxxxxxxxxxx",
    "customChannelId": "ch-6xxxxxxxxxxxx",
    "fact": {
    "runInit": null,
    "runDone": null,
    "runError": null,
    "messageStart": null,
    "messageDelta": {
    "message": {
    "messageId": "1834828082242916352",
    "replyToCustomMessageId": "",
    "text": "北", // <- 追加分のテキストだけ
    "payload": null,
    "isDebug": false,
    "idx": 2, // <- 3 つ目の断片
    "template": null
    }
    },
    "messageComplete": null
    }
    }
  4. 例の読み方​

    積み上がり方​

    delta のイベントが届くにつれて、フロントエンドは次のようにテキストを積み上げます。

    • Delta 1 のあと: "目前"(語句のことがあります)
    • Delta 2 のあと: "目前台"(積み上げが続きます)
    • Delta 3 のあと: "目前台北"(積み上げが続きます)

    注目する点​

    1. messageId が同じ: どの delta イベントも同じメッセージに属します
    2. idx が増える: 正しい順序で処理するための手がかりです
    3. text は追加分: 毎回、新しく加わった断片(文字、語句、文のいずれか)が入ります
  5. 注意点​

    • 順序が大切: 必ず idx の順に処理してください
    • テキストを積み上げる: すべての delta の text をつなぎ、タイプライター風に見せます
    • 性能への配慮: UI の更新が頻繁になるため、最適化に注意してください

始める準備はできましたか?

Asgard をチームでどう活用できるか、お気軽にご相談ください。

お問い合わせ