
NocobaseでHubspotのクローンを作る_アクティビティオブジェクト編
前の記事では、Nocobaseを使ってHubspotのセールスオブジェクトをクローンして実装してみました。。この記事では、Hubspotのアクティビティオブジェクトのクローンに焦点を当てていきます。

アクティビティオブジェクトとは
Hubspotにおけるアクティビティオブジェクトとは、タスク、会議、通話、メールなど、営業担当者と顧客との間のやり取りを記録するためのオブジェクトです。営業活動の管理を効率化し、生産性を向上させることができます。
今回はひとまず最低限必要そうなものをピックアップして作成してみます。
※ メールや電話、SMSなどはプラグインや他のリソースが必要そうなのでここでは省きます
データモデル作成
今回は、タスク・ミーティング・メモ のオブジェクトを作成していきます。
メモ
他のインタラクションと一緒にレコードに関する情報を保存する一般的な方法。


取引やコンタクト、会社などに紐づけることができるようになっていますね。

本文やアクティビティ日を保存するフィールドを作成しました。
取引や会社のメモがわかる情報は、後で行う関連付けで行います。
ミーティング
HubSpotによってログが残されるか、手動で入力された対面のミーティングやオンラインミーティングに関するデータが保存されます。
メモと同じく、取引やコンタクト、会社などに紐づけることができるようになっています。


このように手動でミーティングの記録を残したり、GoogleやOutlookのカレンダーと連携して記録できるようです。
カレンダーとの連携はNocobaseではできなそうなので、今回は手動での登録だけにします。

タイトルや説明、開始時間などを登録できるようにフィールドを作成しました。
取引や会社のミーティングがわかる情報は、後で行う関連付けで行います。
参加者も同じように関連付けで行います。
タスク
特定のユーザーに割り当てられた作業やTo Do項目。

メモと同じく、取引やコンタクト、会社などに紐づけることができるようになっています

タイトルやメモ、期限などを登録できるようにフィールドを作成しました。
取引や会社のタスクであるという情報、担当者は、後で行う関連付けで行います。
関連付け
取引、コンタクト、チケット、会社との関連付け
1つの取引、コンタクト、チケット、会社に複数のメモやタスクが紐づくので以下の関連性でフィールドを作成します。
- メモと取引: 多対1
- タスクと取引: 多対1
- ミーティングと取引: 多対1

- メモとコンタクト: 多対1
- タスクとコンタクト: 多対1
- ミーティングとコンタクト: 多対多

- メモとチケット: 多対1
- タスクとチケット: 多対1
- ミーティングとチケット: 多対1

- メモと会社: 多対1
- タスクと会社: 多対1
- ミーティングと会社: 多対1

ユーザーとの関連付け
タスクやミーティングは担当者というプロパティがあるので、nocobaseのユーザーと関連付けます。
- タスクとユーザー: 多対1
- ミーティングとユーザー: 多対1
ミーティングは主催者を想定。

UIの構築
登録フォーム
コンタクトや案件から作成したコレクションのデータを登録できるようにしてみます。

詳細ページにポップアップをつけてタスクやメモを登録するフォームを表示させるようにしてみます。

登録したいデータのフォームを作成します。

メモ、タスク、ミーティングで登録できる内容は違うので、それぞれ作成します。
その後、作成したフォームからデータを登録してみましょう。

複数のコレクションで使うので、テンプレートとして保存しておくと手間が省けます。
表示
コンタクトや会社から登録したメモやタスクを表示できるようにします。

例えば、コンタクトの詳細を表示させるページに 関連付けられたレコード を選択してデータを表示させる方法があります。

フォームと同じく複数のコレクションで使うので、テンプレートとして保存しておくと手間が省けます。
編集
詳細の表示画面から編集リンクも置けます。

クリックするとドロワーがオープンするので、そこに指定コレクションの編集用のフォームブロックをおきましょう。

編集できる項目を選んでフォームを完成させます。
表示画面と同じく、テンプレートとして保存しておくと手間が省けます。
ワークフローの設定
アクティビティが追加された後担当者に通知したり、期限前にリマインドするなどのことをワークフローで実行することができます。

保存ボタンを押し、データが保存された後ワークフローを実行できます。

タスクの登録時に通知を送るというワークフローを操作後のイベントのトリガータイプで作成してみます。

トリガー設定でコレクションをタスクにします。
他のアクティビティをトリガーにしたい場合は別途ワークフローの作成が必要となります。

Notificationのノードタイプを設定していきます。
チャンネルはメッセージ管理で登録されているものの中から選択します(ここではアプリないメッセージ)
レシーバーは担当者なので、ユーザーのメールアドレスとトリガーデータの担当者のメールアドレスが同じ という条件にしました。

メッセージのタイトルや本文を追加していきます。
トリガーデータの中身を展開することが可能です。
設定後、タスクを有効にしておきます。

作成したワークフローをタスクの保存ボタンに対してバインドすることでワークフローのトリガーを作成できます。

このようにワークフローからメッセージが送信されました。
全てのアクティビティではないですが、タスクやミーティングなどの情報をCRMのデータに登録できるようにしてみました。
柔軟にカスタマイズが可能なため独自のシステムを構築していくことが可能なため、今後はカスタマイズを中心にやっていきます。










