Execution Finished Transformer(実行終了Transformer)
説明
実行終了Transformer
は、Flowの実行が終了したときにトリガーされますが、Transformer関数の動作は、使用するTransformerの基本タイプによって大きく異なり、 その詳細については以下で説明します。
実行終了 Transformer
は、EndpointのTransformerにhandleExecutionFinished
関数を実装することで構成されます。
Transformerの種類の違い
REST Transformers
RESTベースのTransformerの場合、ユーザーへの出力はこのTransformer関数で送られます。
この場合、handleExecutionFinished関数はさらにprocessedOutput
という引数を取得します。この変数には、そのままチャンネルに送信される出力、つまり特定のチャネルに対応する正しい形式の出力が格納されます。こちらから例を見ることができます。また、出力Transformerで処理された出力のリストにもアクセスできます。
WebhookとSocketのTransformer
Execution Finished Transformer
は、WebhookとSocket ベースのエンドポイントに対して重要な関数を持っていません。詳細はこちら。
Transformer関数の引数
handleExecutionFinished
関数は、設定オブジェクトを引数として受け取ります。オブジェクト内のキーの概要を以下に示します。
引数 | 説明 | Webhook Transformers | REST Transformers | Socket Transformers |
endpoint | Endpoint の設定オブジェクト。URLTokenなどが含まれます。 | X | X | X |
outputs | Flowからのすべての出力のリスト。このリスト内の出力は、REST Endpoint用のOutput Transformerで影響を受ける可能性があります。 | X | ||
processedOutput | 特定のチャネルが求める形式に処理された出力。出力Transformerが実行されない場合、これがユーザーに送られます。 | X | ||
userId | ユーザー固有のID。 | X | X | X |
sessionId | トーク固有のID。 | X | X | X |
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を使用して、たとえばログ情報を外部システムに送信することが可能です。