💬

Dialogflow 2段階フォールバック

2022/10/08に公開

チャットボットを設計したとしても、ユーザーは予期しない入力をすることがあります。この場合、チャットボットはハンドリングすることができなくなります。
理解出来なかったルートをUnhappy Pathと言います。
Unhappy Pathに対応する実装の一つを紹介します。

Fallbackインテントを作成

ユーザーの入力をどのインテントにも分類することができなかった場合にマッチするインテントがあります。これをfallbackインテントと呼びます。

Fallbackインテント実装方法

Fallbackインテントを実装します。
Fallbackインテントは異なるインプットコンテキストである必要があります。
同じインプットコンテキストのFallbackインテントを作成しようとすると、エラーが発生します。
(同じインプットコンテキストを作成できない理由は、おそらくFallbackインテントの分類がコンテキストのみであるからだと思います。エンティティを利用しないため、同じコンテキストのFallbackインテントを作成した場合、実行するインテントを特定できないのではないかと思います。)

CREATE INTENTの右隣の「…」を選択します。

Create Fallback Intentを選択する

Fallbackインテントを実装する準備ができました。

Action and Parametersがないインテントが表示されます

Fallbackインテントを作成する順序を紹介しました。

2段階Fallback

Fallbackを2段階に分けて実装する方法です。
ユーザーの入力を2段階で確認します。
2回行うことで、チャットボットが理解できる確率を上げます。

参考にしたサイトは以下になります。
https://rasa.com/docs/rasa/fallback-handoff/#two-stage-fallback

Fallbackインテント設計

Fallbackインテントを以下の様に設計します。

インテント名 input context output context 返答
kaki_first_fallback sample sample, first_fallback どのかきについてのご質問でしょうか?
kaki_second_fallback sample, first_fallback sample, second_fallback 再度ご確認します。どのかきについてのご質問でしょうか?
kaki_end_fallback sample, second_fallback コンテキスト削除 理解できませんでした。

上記のように実装します。

kaki_first_fallback


kaki_second_fallback


kaki_end_fallback

注意する点はkaki_end_fallbackでコンテキストを削除することです。
kakiコンテキストが残っていると、kaki_first_fallbackに戻って無限ループを引き起こす可能性があります。

実行してみる。

さいごに

2段階Fallbackは元の会話に戻るために作成します。
Unhappy Pathは起こってしまうものですが、それにも対応できるとより良いチャットボットを作れると思います。

Discussion