LoginSignup
5
3

More than 3 years have passed since last update.

enebularを使ってSalesforceの商談を取得しChatterに投稿をする

Last updated at Posted at 2019-09-24

はじめまして。
フリーランスエンジニアのよねざわ(@satosiyonezawa)です。

私は以前からenebularとSalesforceのユーザなのですが
これらを連携させれば普段の業務が効率化できるのではないかと考えました。

なので今回は enebular
Salesforceの特定条件の商談を取得して
Chatterで担当者に状況を確認するまでをやってみたいと思います。

準備

  • enebularの導入はこちら
    • Introduction(公式)
    • ↑から無料でアカウントを作ってHelloWorldの実行まですぐにできます
  • Salesforceのアカウント入手

最終完成図

完成形は以下のようなフローになります。

  • SOQLを発行して商談データを取得
  • 商談の数だけ文章を作成しchatterに投稿する

ということをやっています。
enebular公式サイトにフローを一般公開しているので
こちらも参考にしてください。

スクリーンショット 2019-09-22 15.47.03.png

Salesforceノードのインストールと認証

それではやっていきましょう。
まずはSalesofrceと連携するノードをインストールします

  • node-red-contrib-forceノード をインストール

    • 右上の adminタブ をクリック
    • node-red-contrib-force と入力
    • Installボタン をクリック スクリーンショット 2019-09-22 15.38.30.png
  • 追加された forceノード をドラッグ&ドロップで設置

  • 設置したノードをダブルクリックで開き、Salesforceの認証情報入力画面を開く
    スクリーンショット 2019-09-22 16.05.50.png

  • User NameはSalesforceのログイン時に使う ユーザ名

  • Passwordは [パスワード] + [セキュリティートークン] の順でつなげて入力

    • 入力例:パスが[pass1234]でトークンが[hgfg]なら[pass1234hgfg]を入力

スクリーンショット 2019-09-22 16.09.51.png

Salesforceセキュリティートークンの発行の仕方

Salesforceにログインして以下の画像の通りに進めてください。
セキュリティートークンが記載されたメールが送られてきます。
スクリーンショット 2019-09-22 16.13.55.png

スクリーンショット 2019-09-22 16.18.52.png

スクリーンショット 2019-09-23 8.32.13.png

SOQL(クエリ)発行

  • Opertaionは query に設定
  • maxFetcevalueには1回のクエリで最大取得数を設定

スクリーンショット 2019-09-22 16.27.26.png

  • injectノードを設置して文字列に設定しSOQLを入力しますスクリーンショット 2019-09-22 16.30.58.png

  • 今回の取得条件は以下の3つなのでSOQLはこのようになりました

    • 商談オブジェクト
    • 最終活動日から1ヶ月以上
    • 確度が50%以上
  • Owner.Name は商談の所有者をChatterの本文に組み込むために取得しています

SELECT
  Id,Name,LastActivityDate,Probability,Owner.Name
FROM
  Opportunity
WHERE
  Probability >= 50
  AND
  LastActivityDate < LAST_N_DAYS:30

SOQL(クエリ)実行してみる

ここまでで商談データが取得可能です。
実際に実行してみましょう。

  • debugノードを設置
  • injectノードをクリックして実行
  • デバッグタブで商談データが複数件取得していることが確認できます スクリーンショット 2019-09-22 16.43.28.png

取得件数分、処理を実行する(ループ実行)

  • enebular(NODE-RED)特有のループ処理を書いていきます
  • changeノード
    • ループカウントの初期化
    • 商談の取得件数をループ回数に設定

スクリーンショット 2019-09-22 17.00.44.png

  • switchノード

    • ループカウントがループ回数に達したら処理を止める
    • TIPS:追加ボタンを押して条件に[その他]を設定することでelseのような分岐処理をすることもできます スクリーンショット 2019-09-22 17.15.37.png
  • functionノード

    • ループカウントをインクリメント(+1)します
    • 画像のようにノードをつないで8の字にします
      • そうすることでループカウントがループ回数に達した時に止まる処理を実現できます

スクリーンショット 2019-09-22 17.24.06.png

  • Chatterの文章に組み込みたいデータをmsgに設定
    • Name → 商談名
    • Owner.Name → 所有者名
    • Id → salesforceのレコードId スクリーンショット 2019-09-22 18.24.23.png
msg.Name = msg.payload[msg.loopcount].Name;
msg.OwnerName = msg.payload[msg.loopcount].Owner.Name;
msg.salesforceId = msg.payload[msg.loopcount].Id;
return msg;
  • templateノードでChatter文を作成
    • {{msgにぶら下がる項目名}} のように設定することでmsgのデータが使えます
    • 商談のURLは直接URLにsalesforceIDを組み込んでいます
  • このようにテンプレートを作成しmsg.payloadに設定してChatterノードへ送ります

スクリーンショット 2019-09-22 17.40.17.png

  • Chatterノード
    • Operationに Post Feed を設定するとpayloadの内容が投稿されます
    • Mentionを設定するとSalesforceのメンション機能を使えますがメンション先が固定されてしまいます。商談リマインドグループなどを作成してそこにメンションするか、SOQLのWhere句の商談所有者とメンション先を一致させてフローを複数作成するかなどの方法があります。

スクリーンショット 2019-09-22 18.06.11.png

フロー実行からChatter投稿確認まで

  • injectノードをクリックしてフローを実行します
  • 取得できた商談件数分、Chatterが投稿されていることが確認できます

スクリーンショット 2019-09-22 18.31.30.png

まとめ

enebularで
Salesforce認証→SOQL発行→文章作成→Chatter投稿
という流れを行いました。

  • forceノードを使うと簡単にSalesforce連携ができる
  • ループ処理の実行はNode-RED特有の工夫が必要
  • enebularだと複数のシステムを組み合わせた業務効率化ができそう
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3