Slackのメッセージをn8nワークフローで分類させる
Timelab で Lynx というカレンダーサービスを開発している takahashi(@stak_22)です。
今回は、n8nというワークフローを作ることができるツールを使って、業務効率化にチャレンジしてみた話をします。
※「こんなワークフローを作ってみたよ!こんなことが技術的に実現できたよ!」という話ですが、「作ってみてこのワークフローは業務効率化において有効なワークフローだよ!」という話ではありません。今のところとりあえずまだ作っただけで運用できるかは試用してみてから…という感じです。n8nでこういうことが実現できるんだよ的な話になっていますので、予めご理解ください。
n8n とは?
n8nは、様々なアプリケーションやサービスを「ノード」としてつなぎ合わせ、ノーコードでワークフローを自動化できるオープンソースのツールです。
クラウド版とセルフホスト版があります。
公式ドキュメントによると、クラウド版ならすぐ簡単に使えますが、無料トライアル期間が終わると料金が発生してしまいます。一方でセルフホストすると、community edition を無料で使用できます。テンプレートを使いたいなど他の機能が欲しい場合は enterprise edition を有料で契約することができます。
@ref https://docs.n8n.io/choose-n8n
弊社では、今のところセルフホストして community edition を利用しています。ある程度のワークフローなら十分実装できるので、これで十分だと思います。
今回実現したこと
お客様からお問い合わせが Slack に飛んでくるのですが、その中には営業メールなども含まれています。それらを人間が監視してCS対応が必要かどうかを見極めてから、CS対応を行なっていました。
それを自動化しました。

組んだワークフロー
- Slackにメッセージが飛んでくる(そのチャンネルを常に監視する)
- メッセージを受け取る
- そのメッセージが対象のものかを判定する(ボット自分自身ではないこと、スレッドのメッセージではないこと、editやdeleteのアクションではないこと)
- [AI判定] メッセージから、営業メールなのか、単純にチャンネルメンバーの発言なのか、要CS対応のものかを判定する(営業メールやチャンネルメンバーの発言なら終了し、要CS対応のものだけ継続)
- NotionのCSサポートDBに登録する
- SlackでメンションをつけてCS担当にメンション

AI判定
プロンプト次第で良い感じに出来るかどうかは決まるので、重要なパートです。(今後試用しながら改善できればと思っています)
まずはキャラクターや役割を与えます。
あなたはLynxというアプリの優秀なカスタマーサポートです。
- 与えられたメッセージは、Slackに通知される問い合わせボットです。
- この内容が フィードバック/改善要望/不具合報告/その他CS対応依頼 に該当するかどうかを判定してください。不満や機能の要望と判断したら基本的にフィードバックだと判断してください。
- 中には営業メールも含まれるので、それらの場合は対応不要です。Lynxプロダクトに関しない問い合わせはもっぱら無視でいいです。
- 運営によるCS対応返信メールも通知されることがありますが、その場合は対応不要です。
その後、ユーザーからのメッセージと出力形式を与えます。
以前のノードの出力を受け取ることができるので、それを使います。
# ユーザーのメッセージ
{{ $json.output.message }}
# 出力形式
{
"action_required": 1,
"user_email": "文中にメールアドレスがあれば入れて、なければ空文字"
"overview": "概要一言",
"message": "具体的な内容(ユーザーメッセージの文面を整える程度で良いです)"
}
最後に、いくつか例を示してあげます。これを網羅できればある程度精度高くなる気もしています。
# few-shot
## 例1
ユーザーメッセージ: "新しい問い合わせがありました:
名前: 山田太郎
メールアドレス: hoge@gmail.com
問い合わせ種別: その他
問い合わせ内容: "会社を退職しログインできなくなってしまったので、アカウント削除をお願い致します。"
出力:
{
"action_required": 1,
"user_email": "hoge@gmail.com",
"overview": "アカウント削除依頼",
"message": "会社を退職しログインできなくなってしまったので、アカウント削除をお願い致します。"
}
## 例2
...
デバッグしながら組み込む
各ノードごとに設定方法が不安で最初は作れるか自信なかったのですが、わからない詳細な設定は調べつつ、一部コーディングが必要な部分は上手くデバッグして作ることができました。
あ、そうなんです、判定には一部コーディングを行いました(ノーコードツールなのにって感じですけど…w)
しかし、「Execution」という機能があり、ここを見るとワークフローが実行されたときのログと、どこで失敗しているのかも見ることができます!!!👏

さらにノードの中を見ると、実行時にどういう値が渡されているのかも見れます!!

感想
意外と頑張れば簡単にワークフローを実装できました!
エディタ画面からログが見れて簡単にデバッグできる環境なので、作りやすいと感じました。
今後近い未来こういうノーコードツールが主流になって、今でいうFigmaみたいに誰でも簡単に裏側を実装する時代がやってくる気もするので、こういったワークフローツールには慣れておきたいです。
Discussion