時間帯によってn8nチャットボットの挙動を変化させる

前回までで、n8nで作成したチャットボットを関西弁で喋るようにしてきました。
今回は、さらに簡単なプログラムを施すことで、n8nの挙動を細かく制御できる事を紹介します。

『アクセスした時間帯によって、チャットボットの挨拶を変化させる』

初期メッセージを「プログラム」する



初期メッセージをカスタマイズするには、「チャットトリガー」ノードを選択して設定画面を開き、Initial Message(s)を設定していきます。 



デフォルトでは「Fixed」になっているところを「Expression」を選択し、コードを仕込んでいきます。
n8n ではInitial Message(s)だけでなく、プロンプトなどの各所で、固定テキストのかわりに、{‍{ }}で囲われた内部にJavaScriptコードを書いて、プログラム的に挙動を制御することが可能です。

Initial Message(s)に下記のようなコードを記述してみましょう。

{‍{ (() => {
  const tz = 'Asia/Tokyo'; // タイムゾーンを指定
  const hour = parseInt(
    new Intl.DateTimeFormat('ja-JP', { hour: '2-digit', hour12: false, timeZone: tz }).format(new Date()),
    10
  );

  let greetmsg = 'まいどですー';
  if (hour < 5)       greetmsg = '遅うにすんまへん';
  else if (hour < 12) greetmsg = 'おはようさんですー';
  else if (hour < 18) greetmsg = 'まいどですー';
  else if (hour < 22) greetmsg = 'おばんですー';
  else greetmsg = 'おばんですー';

  let rtnmsg =  `${greetmsg} ただいま ${hour}時台やで。`
                                                      + `n8nチャットへようお越し!\n\r`;
  rtnmsg += 'なんぞお手伝いしましょか?';

  return rtnmsg;
})() }}


※本ブログの運営ツールの特殊文字列の扱いの都合上、{‍{ や }}の}と}の間に「ゼロ幅スペースが入っています。コピペして利用される際にはご注意下さい。(ゼロ幅スペースを取り除いて下さい。) 

例示している内容は非常に簡単なものですので、JavaScriptコード自体の解説は割愛します。
単にアクセス時のカレント時間を取得して、時間帯により挨拶メッセージを変えているだけです。

コードを仕込んで、Saveしたうえで公開ページにアクセスしてみましょう。

↓17時台にアクセス

↓18時台にアクセス

このように、プログラム的にn8nの挙動を制御することができます。

今回は非常にシンプルなコードですが、n8nで「プログラム」を仕込む基礎となります。

n8nはノーコードでも強力に利用することが可能ですが、少しプログラム的な制御を加えることで、より高度な処理を実行できます。n8nが「プログラマブル」であり、エンジニア向けのAIワークフローツールと言われる所以です。