Dx-Line機能紹介

Salesforceからのメール配信では開封率が上がらない…開封してもその後のアクションにつながらない…
個別のLINEメッセージ対応は大変…相手に応じた細やかな投稿が出来ていない…
顧客情報を確認しながらのメール・LINE作成は手間取る…

SalesforceとLINEを連携し顧客データと伝達ルートを一元化!
顧客のセグメントで的確なターゲティングをし、メッセージのスケジューリング一括配信で、お客様が欲しい情報を欲しいタイミングでお届け!

フレックスメッセージやリッチメニューの利用、メッセージのテンプレート化で簡単に見栄えの良い配信が可能!

サービススタッフにとってもお客様にとってもストレスフリーで効果的なコミュニケーションを実現します。

Dx-Line

■Youtube 機能紹介動画


■AppExchange 掲載画面

https://appexchangejp.salesforce.com/appxListingDetail?listingId=a0N4V00000HZYnIUAX

・お客様がLINE登録するだけでSalesforceに自動連係!
・複数のLINE公式アカウントと紐付け可能!
・Salesforce上でお客様と1:1チャット!
・カスタムオブジェクトにチャットを自由に組み込み可能!
LINEと同様の機能に対応!
・画像・動画の送信
・フレックスメッセージ
・ピン止め
・リッチメニュー(※他アプリで作成し汎用)
メッセージを
・セグメントした顧客に向けて配信
・テンプレート管理
・スケジュールで一括配信

コミュニティ Experience Cloudのロール、データ共有について

・ロール階層は最大 3 階層まできます。

・外部ユーザ作成時に、取引先単位で自動的に作成されます。

   それぞれは以下となります。
      〇〇〇 顧客 ユーザ
      〇〇〇 顧客 マネージャー
      〇〇〇 顧客 エグゼクティブ
   標準オブジェクトのUserRoleで以下のようにになります。
portalrole: Worker,Manager,Executive
portaltype: Partner or CustomerPortal (カスタマーユーザ)
portalaccountid:関連取引先のID

共有セットを利用してデータを共有すると、上記のロール階層でのデータのアクセス制限が機能できなくなります。

・常識ですが、同一ロール階層のユーザ同士はデータの参照はできないです

・ロール有効化しづつ、一部のロール見えたくない場合、以下で手動で共有レコードを作成する。
・手動でロールに共有する場合:

① ○○○○_share のObjectに以下のようにレコードを作成する。

Member__share s = new Member__share();
s.parentid = 'xxxxxx';
s.UserOrGroupId='xxxxxx';
s.AccessLevel = 'Edit';
insert s;

※ parentid :共有したいレコードId
※ UserOrGroupId ← Select id FROM Group Where Type = 'Role' and relatedid='UserRoleのID'

カスタムユーザ ロール 新規 3階層

■問題:

カスタムユーザ新規作成
取引先新規作成⇒取引先担当者新規作成⇒「カスタマーユーザを有効化」ボタンをレイアウトに表示させる⇒ 「カスタマーユーザを有効化」ボタンクリックし、ユーザ新規作成する。

  作成したユーザのロールは「〇○○顧客 個人取引先」になってしまう。

■対応方法:

以下の設定を変更してから、カスタムユーザ有効化し作成する。
   「共有設定」→「作成されるロール数を最小限に抑えます。これにより、処理の負荷が軽減され、パフォーマンスが向上します。」外す

ユーザ管理権限

Salesforce Platformライセンスユーザでもユーザ作成、管理できるように設定方法

Platformユーザ以下のように設定する。

① 「代理管理者」としてユーザ登録する。
➁ アプリケーション権限 「外部ユーザの管理」という権限を含む権限セットを作成し、付与する。

Salesforce 自動処理回避する方法

自動処理:
1 トリガー
2 フロー
3 入力規則

対応方法例:
1  設定⇒「カスタム設定」にて、定義(例:AutoRunFlag__c)を追加する。

2 「カスタム項目」を追加する 例えば: チェックボックスの定義(例:AutoRunFlag__c) を追加する


3 「Manage」を押す、ユーザ単位あるいはプロファイル単位の値を設定する
  例:実行の場合、 true

4 トリガーやバッチ実行処理にて、以下の処理を追加する。

 //トリガー実行スキップ
    AutoRunFlag__c autoflag = AutoRunFlag__c.getInstance();
    if(autoflag !=null && autoflag.AutoRunFlag__c) {
        return ;
    }

//入力規則
$Setup.AutoRunFlag__c.AutoRunFlag__c

Salesforce エクスペリエンス ファイルの外部共有

添付ファイルを外部共有について

ContentDocumentLink.Visibility = AllUsers

に設定すれば、外部ユーザに共有できます。

以下の方法でフローで実現できます。

通常トリガーフローは、ContentDocumentLinkにアクセスできないため、

①「自動起動フロー(トリガーなし)」のフローで共有処理(ContentDocumentLink.Visibility = AllUsers)を実装する。

➁ 通常トリガーフローから①のフローを呼び出すようにする。

Salesforce AppExchange App セキュリティレビュー

1 必要など申請資料の確認

 https://checklistbuilder.herokuapp.com/
 ※外部公式API利用してる場合も、そのAPIのセキュリティチェックも必要のようです。

 ①  Force.com Source Code (Checkmarx) Scanner Results
Partnerではなくても、だれでも以下すぐにでチェックし、レポートの取得可能です。
   https://security.secure.force.com/security/tools/forcecom/scanner

※パートナーでも登録申請してからチェック可能まで数日かかります。

 ➁ Web Application Vulnerability Scanner Results
  OWASP ZAP をインストールする
  PostManインストールする。

以下を設定する。

※PostManにて、APIを呼び出してから、OWASP ZAPに追加されることになります。

2 パッケージを含む組織と接続してリストを作成、セキュリティ依頼する

  第二世代管理パッケージの場合は、Dev Hub 組織を接続します。

  また、以下のコマンド最後まで実行しないと、DevHubに接続しても表示されません。

1 sfdx auth:web:login -d -a DevHub
2 sfdx config:set defaultdevhubusername=DevHub 
3 sfdx force:org:create -f config/project-scratch-def.json -a [組織アライアンス名] -s -d30
  sfdx force:source:push
  sfdx force:org:open → 動作確認して、問題なければ、以下で管理パッケージを作成する

4 sfdx force:package:create --name [パッケージ名] --path force-app --packagetype Managed
5 sfdx force:package:version:create --package [No4 生成したパッケージID] --definitionfile config/project-scratch-def.json --codecoverage --installationkeybypass --wait 10
6 sfdx force:package:version:promote -p [No5 生成したバージョンID]

注意点:
   ・プロファイルを利用せず、権限セットで利用すること。
  ・参照ソース維持するスクラッチ組織と開発組織分けること。
    (不要な変更パッケージから除外するため)

以下を利用して、不要な内容をパッケージから除外

 .forceignore

package.xml

# LWC configuration files
**/jsconfig.json
**/.eslintrc.json

# LWC Jest
**/__tests__/**
**/profiles/**
**/AppSwitcher**
**/testSuites**
**/*SessionSetting*
**/*PasswordPolicy*
*SessionSetting*
*PasswordPolicy*

  project-scratch-def.json

{
  "orgName": "better-future Co. Ltd",
  "edition": "Partner Developer",
  "features": ["DebugApex"],
  "settings": {
    "lightningExperienceSettings": {
      "enableS1DesktopEnabled": true
    },
    "mobileSettings": {
      "enableS1EncryptedStoragePref2": false
    }
  }
}

検証スクラッチ組織作成

{
  "orgName": "Demo company",
  "edition": "Enterprise",
  "features": [],
  "settings": {
    "lightningExperienceSettings": {
      "enableS1DesktopEnabled": true
    },
    "securitySettings": {
      "passwordPolicies": {
        "enableSetPasswordInApi": true
      }
    },
    "mobileSettings": {
      "enableS1EncryptedStoragePref2": false
    }
  }
}

〇参考資料:
https://japan-isv.my.site.com/basecamp/s/appexchange-partner

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

① sfdx-project.json 作成

{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "dxlineapp",
"versionName": "ver 1.0",
"versionNumber": "1.0.0.NEXT"
}
],
"name": "fmlline",
"namespace": "bfml",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "54.0",
"packageAliases": {
"dxlineapp": "xxx",
"dxlineapp@1.0.0-1": "xxx"
}
}

➁環境ハブから、「Enterprise Edition」の環境を作成する。

③ 上記のコマンドで生成したPackgeを上記の環境にインストールする。
/packaging/installPackage.apexp?p0=xxxxxxx

④ Partner Community にログインし、「組織を接続」で上記の環境に接続する

⑤ 「リスト」を作成し、

 「リスト」→「アプリ」→「パッケージを選択」
上記作成したパッケージバージョンを選択する。

⑥ セキュリティソースチェック

以下にアクセスする(最初は申請する必要で、少し時間がかかる)
https://security.secure.force.com/sourcescanner/PackageScannerMain

以下で、上記選択したパッケージを選択し、セキュリティチェック処理を実施する。

⑦ 実行後、「Download Report」から結果を取得し、そのままセキュリティーレビューに添付する。