Watson Assistant(旧Conversation)でJump toの挙動の違い


はじめに

Watson Assistantでチャットボットを作成しているのですが、
Dialogで細かい挙動を設定している際に気付いた挙動の違いについてメモ。

やろうとしたこと

(Watson Assistant)
①親ノード(Jump先のノード)滞在時にユーザーが入力

(サーバー)
②入力チェック
 続行不可(やり直し)となった場合、context変数Aに値をセット

(Watson Assistant)
③context変数Aの値を条件に子ノード(Jump元のノード)が捕捉

(Watson Assistant)
④子ノード(Jump元のノード)がcontext変数Aの値をクリア

(Watson Assistant)
⑤子ノード(Jump元のノード)が親ノード(Jump先のノード)にJump
 Jump to(Evaluate condition)

なぜこのようにしているかというと、
入力チェックに引っかかった場合、先に進ませずに再度入力させるためです。

事象

以下のような挙動の差がありました。

Jump先のノードの条件による挙動の差

true以外 true
④が実行される ④が実行されない

原因と対応

原因

よくわかりませんが、trueは特別なのでしょうか。
子ノードが処理されてからJump toするものだと持っていましたが、
trueの場合、スルーされてしまうのか??

対応

④で実施しているcontext変数Aの値をクリアする処理を
親ノード(Jump先のノード)で実施するようにしました。

さいごに

発端はtrue以外に設定しているノードでちゃんと動いていたので、
同じようにtrueに設定しているノードに設定したら動かなかったのです。
処理は同じなのに設定が違うのは混乱の素なので、
同じ設定で統一するために、元々の設定を直す形となりました。

自分の知識不足で何か間違っているような気がしなくもないですが、
もし何か知っている方いたら教えて下さい。