

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lex V2 ボットのフルフィルメント進行状況の更新の設定
<a name="streaming-progress"></a>

インテントのフルフィルメント Lambda 関数が呼び出されると、ボットは関数が完了するまでレスポンスを送信しません。Lambda 関数の完了に数秒以上かかる場合、ユーザーはボットが応答しないと思うかもしれません。これに対処するには、フルフィルメント Lambda 関数の実行中にユーザーにアップデートを送信するようにボットを設定して、ボットが引き続きリクエストを処理していることをユーザーに知ることができます。

インテントにフルフィルメントアップデートを追加すると、ボットはフルフィルメントの開始時とフルフィルメントの進行中に定期的に応答します。スタートレスポンスを設定するときに、ボットがレスポンスを送信するまでの遅延を指定できます。これにより、フルフィルメントが比較的早く完了しないケースをサポートできます。アップデートレスポンスを構成するときは、アップデートを送信する頻度を指定します。また、フルフィルメント関数の実行時間を制限するようにタイムアウトを構成します。

フルフィルメント後のレスポンスをボットに追加することもできます。これにより、ボットはフルフィルメントの成功、失敗、またはタイムアウトのどちらによって異なるレスポンスを送信できます。

フルフィルメントのアップデートは、[StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html) オペレーションを使用してボットと対話する場合のみに使用されます。[StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html)、[RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)、および [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) オペレーションでボットと対話する際に、ポストフルフィルメントアップデートを使用することができます。

## フルフィルメントのアップデート
<a name="progress-updates"></a>

フルフィルメントのアップデートは、Lambda 関数がインテントを満たしている間に送信されます。フルフィルメントのアップデートを有効にすると、フルフィルメントの開始時に送信されるスタートレスポンスと、フルフィルメントの進行中に定期的に送信されるアップデートレスポンスを提供します。

アップデートレスポンスを指定するときは、フルフィルメント機能を実行できる期間を決定するタイムアウトも指定します。タイムアウトの長さは、最大 15 分（900 秒）まで指定できます。

コンソールで `active` を [false] に設定するか、[CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) または [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) オペレーションを使用してフルフィルメントアップデートをオフにすると、フルフィルメント更新に指定されたタイムアウトは使用されず、代わりにデフォルトのタイムアウトである 30 秒が使用されます。

フルフィルメント機能がタイムアウトした場合、Amazon Lex V2 は次の 3 つのうちいずれかを行います。
+ フルフィルメント後のレスポンスが構成され、アクティブ — タイムアウトレスポンスを返します。
+ フルフィルメント後のレスポンスが構成されており、アクティブではない場合 - 例外を返します。
+ フルフィルメント後のレスポンスが構成されていません - 例外を返します。

### レスポンスを開始
<a name="progress-start"></a>

Amazon Lex V2 は、ストリーミング会話中に Lambda フルフィルメント関数が呼び出されたときにスタートレスポンスを返します。通常、インテントの実行には時間がかかり、待たなければならないことをユーザーに伝えます。`RecognizeText` あるいは `RecognizeUtterance` の操作を行った場合、スタートレスポンスは返されません。

最大 5 つのレスポンスメッセージを指定できます。Amazon Lex V2 は、ユーザーへのメッセージを 1 つ選んで再生します。

Lambda 関数が呼び出されてからスタートレスポンスが返されるまでの遅延時間を設定できます。遅延が完了する前に Lambda 関数が作業を完了した場合、スタートレスポンスは返されません。

コンソール内の `active` トグルまたは [FulfillmentUpdatesSpecification](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html) 構体を使用して、フルフィルメント後のレスポンスのオン/オフを切り替えることができます。`active` が [false] の場合、スタートレスポンスは再生されません。

### レスポンスをアップデートする
<a name="progress-update"></a>

Amazon Lex は、Lambda フルフィルメント機能の実行中に、ストリーミング会話で定期的にアップデート応答を返します。`RecognizeText` または `RecognizeUtterance` の操作では、アップデートレスポンスは再生されません。アップデートレスポンスが再生される頻度を設定できます。たとえば、フルフィルメント関数の実行中に 30 秒ごとにアップデートレスポンスを再生して、プロセスが実行中であり、引き続き待機する必要があることをユーザーに知らせることができます。

最大 5 つのアップデートメッセージを指定できます。Amazon Lex V2 は、ユーザーへのメッセージを選んで再生します。複数のメッセージを使用すると、アップデートが繰り返されるのを防ぎます。

フルフィルメント Lambda 関数の実行中にユーザーが音声、DTMF、またはテキストを介して入力を提供した場合、Amazon Lex V2 はユーザーにアップデートレスポンスを返します。

Lambda 関数が最初のアップデート期間が終了する前に作業を完了した場合、アップデートレスポンスは返されません。

コンソール内の `active` トグルまたは [FulfillmentUpdatesSpecification](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html) 構体を使用して、更新レスポンスのオン/オフを切り替えることができます。メトリック `active` が [false] の場合、アップデートレスポンスは返されません。

## フルフィルメント後のレスポンス
<a name="progress-complete"></a>

Amazon Lex V2 は、フルフィルメント関数の終了時にフルフィルメント後のレスポンスを返します。フルフィルメント後のレスポンスは、ストリーミング会話をするだけでなく、あらゆるインテントを満たすときに使用できます。フルフィルメント後のレスポンスでは、機能が完了したこととその結果をユーザーに知らせます。

コンソール内の `active` トグルまたは [PostFulfillmentStatusSpecification](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html) 構造を使用して、フルフィルメント後のレスポンスのオン/オフを切り替えることができます。`active` が [false] の場合、レスポンスは再生されません。

フルフィルメント後のレスポンスには、次の 3 種類があります。
+ **成功** — フルフィルメント Lambda 関数の作業が正常に完了したときに返されます。フルフィルメント後のレスポンスがアクティブでない場合。Amazon Lex V2 は、次に設定されたアクションを実行します。
+ **タイムアウト** — 設定されたタイムアウト期間が経過する前に Lambda 関数が作業を完了しなかった場合に返されます。フルフィルメント後のレスポンスがアクティブでない場合、Amazon Lex V2 は例外を返します。
+ **失敗** - Lambda 関数がレスポンスで `Failed` ステータスを返すとき、または Amazon Lex V2 がインテントを遂行する際にエラーに遭遇したときに返されます。フルフィルメント後のレスポンスがアクティブでない場合、Amazon Lex V2 は例外を返します。

各タイプのメッセージは最大 5 つまで指定できます。Amazon Lex V2 は、ユーザーへのメッセージを 1 つ選んで再生します。

フルフィルメント開始応答やフルフィルメント更新応答とは異なり、フルフィルメント後の応答は、ストリーミング会話と非ストリーミング会話の両方を再生します。

また、Lambda 関数がフルフィルメント後のメッセージを返すように設定することで、これらのメッセージを上書きすることもできます。

**注記**  
インテントに終了応答がある場合、フルフィルメント後の応答の後に返されます。

### Lex V2 のフルフィルメント後の例
<a name="post-fulfillment-example"></a>

フルフィルメント後の対応について理解を深めるために、*BookTrip* ボットを例にとってみましょう。*BookFlight* インテントには、顧客のフライトを航空会社で予約するフルフィルメント Lambda 関数が設定されています。*BookFlight* のスロットが解放されると、Amazon Lex V2 はフルフィルメント Lambda 関数を呼び出します。フルフィルメントプロセスでは、次の 3 つの結果のいずれかで設定できます。
+ **成功** — フライトは正常に予約されました。
+ **タイムアウト** — 設定したフルフィルメント Lambda 実行時間よりも予約処理に時間がかかっています (たとえば、割り当てられた時間内に航空会社に連絡できない場合)。
+ **失敗** — 別の理由で予約が失敗しました。

フルフィルメント後の対応を活用することで、こうした状況において顧客により有意義な応答を提供することができます。それぞれの状況の例は次のとおりです。
+ **成功の応答** —「チケットの予約が完了し、確認メールを送信しました。ご不明な点がございましたら、そのメールに記載されている連絡先情報を使用して、お気軽にお問い合わせください。」
+ **タイムアウトび応答** —「システムが込み合っているため、チケットの予約に予想以上に時間がかかっています。お客様のリクエストが処理待ちになっています。このリクエストに対応する参照番号を記載したメールを送信しました。チケットを予約したら、予約確認書をお送りします。ご不明な点がございましたら、そのメールに記載されている連絡先情報を使用して、お気軽にお問い合わせください。」
**注記**  
タイムアウトメッセージを設定しない場合、Amazon Lex V2 はユースケースに対応する 4XX エラーをスローします。
+ **失敗の応答** —「申し訳ございません。チケットを予約できませんでした。予約時に発生した問題の詳細を記載したメールを送信しました。」