#環境
IBM Cloud 上の node-red で開発しています
Assistant を利用して LINE bot との会話を構成します
#やりたいこと
Assistant で会話を始める前に Assistant に情報を渡したい
例えば今回は、LINE bot に画像を投稿して、Watson Visual Recognition で画像を認識させて、その結果を Assistant の会話で利用する必要がありました
#方法
Assistant ノードの前に function ノードを追加して以下を記述します
//watson assistant の準備
msg.params = {};
msg.params.endpoint = "https://gateway.watsonplatform.net/assistant/api";
msg.params.username = "xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx"; //Assistant の資格情報
msg.params.password = "xxxxxxxxxxxx"; //Assistant の資格情報
msg.params.workspace_id = "xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx"; //Assistant で呼び出したい Workspace の Workspace-id
//渡したい情報を context にセットする
msg.params.context.color= "red";
msg.params.context.size= "big";
msg.payload = {};
msg.payload = "bot に投げるメッセージ";
return msg;
#備忘
会話はこちらからのメッセージに対して、bot が一回返答する形になります
次のメッセージをこちらから投げる時には前の msg はクリアされていて、値を保持しておけません
Assistant は継続した会話として値を保持してくれているようですので、context に入れておけば持っておけます
その後は、会話を新たに始める際に context をクリアしています