Execution Finished Transformer(実行終了Transformer)

説明

実行終了Transformerは、Flowの実行が終了したときにトリガーされますが、Transformer関数の動作は、使用するTransformerの基本タイプによって大きく異なり、 その詳細については以下で説明します。

実行終了 Transformerは、EndpointのTransformerにhandleExecutionFinished関数を実装することで構成されます。

実行終了 Transformer の例

Transformerの種類の違い

REST Transformers

RESTベースのTransformerの場合、ユーザーへの出力はこのTransformer関数で送られます。

この場合、handleExecutionFinished関数はさらにprocessedOutputという引数を取得します。この変数には、そのままチャンネルに送信される出力、つまり特定のチャネルに対応する正しい形式の出力が格納されます。こちらから例を見ることができます。また、出力Transformerで処理された出力のリストにもアクセスできます。

WebhookとSocketのTransformer

Execution Finished Transformer は、WebhookとSocket ベースのエンドポイントに対して重要な関数を持っていません。詳細はこちら

Transformer関数の引数

handleExecutionFinished関数は、設定オブジェクトを引数として受け取ります。オブジェクト内のキーの概要を以下に示します。

引数説明Webhook TransformersREST TransformersSocket Transformers
endpointEndpoint の設定オブジェクト。URLTokenなどが含まれます。XXX
outputsFlowからのすべての出力のリスト。このリスト内の出力は、REST Endpoint用のOutput Transformerで影響を受ける可能性があります。X
processedOutput特定のチャネルが求める形式に処理された出力。出力Transformerが実行されない場合、これがユーザーに送られます。X
userIdユーザー固有のID。XXX
sessionIdトーク固有のID。XXX

Transformerの戻り値

実行終了Transformerの戻り値は Transformerの基本型により異なります。実行終了Transformerの戻り値の検証はありません。

REST Transformers

Execution Finished Transformerは、それ以上の変更を加えることなく、特定のチャネルに直接送信できる出力を返さなければなりません。つまり、Transformer が Alexa Endpoint で有効になっている場合、その形式はAlexa のドキュメントに記述されているメッセージ形式に従わなければなりません。

以下は、Alexa Endpointの正しいリターン形式の例です:

Webhook / Socket のリターン形式

handleExecutionFinished: async ({ processedOutput, outputs, userId, sessionId, endpoint, response }) => {
    /**
     * Combine all of the Flow outputs into one message
     */
    const text = outputs.reduce((mergedOutput, output) => `${mergedOutput}. ${output.text}`, "").trim();

    const responseToAlexa = {
        version: "1.0",
        response: {
            outputSpeech: {
                type: 'SSML',
                ssml: `<speak>${text}</speak>`
            },
            shouldEndSession: false
        }
    };

    return responseToAlexa;
}

実行終了Transformer がfalsy(偽)値を返した場合、出力はユーザーに送信されず、破棄されます。

Webhook と SocketのTransformer

実行終了 Transformer には特別な関数はないので、戻り値はありません。この時点で、すべての出力はユーザーに送信され、Transformerを使用して、たとえばログ情報を外部システムに送信することが可能です。