Skip to main content

#Salesforce Developer381 人正在讨论

拡張メモを共有する際に、共有相手にメールが通知されるようになっています。  

このメールについて、

メールを飛ばさないようにすること

、は可能でしょうか?  

公式には、「

メモを共有する場合、他のユーザーが共有または共有解除できるかどうかを制御します。受信者には、共有メモへのリンクとあなたからのメッセージを記載したメールが送信されます。

」とだけ記載されており、メール通知に関して制御可能かが分かりませんでした。  

 

また、いただいた回答を参考に、設定→ Chatter→メール設定→メールを許可のチェックを外したのですが、メールが通知されるままでした。 

 

#Sales Cloud  #Salesforce  #Salesforce Developer

1 个回答
  1. 9月7日 08:45

    同様の議論に基づくと、拡張ノート共有通知はChatterメール通知と連動しているようです。そのケースでは、受信者がChatterメール通知設定で「メール受信」を有効にしている場合にのみ、ノート共有メールが送信されることが確認されました。 

     

    テストとして、受信者のユーザーが「個人設定」→「Chatter」→「メール通知」→「メール受信」を有効にしているかどうかをご確認ください。このオプションを一時的に無効にしてから再度ノートを共有することで、通知がChatterメール設定によって制御されているかどうかを判断できる可能性があります。

0/9000

Hi everyone,

I'm trying to link a registered namespace to a Salesforce Dev Hub, but the Link Namespace OAuth flow consistently fails.

I have two Salesforce Developer Edition orgs:

Dev Hub org

Namespace org

The namespace is registered in the second Developer Edition org.

From the Dev Hub, I go to:

Setup → Namespace Registries → Link Namespace

Salesforce opens the OAuth login popup, but instead of displaying the login/authorization screen, the popup immediately returns:

error=invalid_request&error_description=missing%20required%20code%20challenge

Troubleshooting already performed

I have tried the following:

  •  Normal browser 
  •  Incognito/private browser 
  •  Different browser session 
  •  Confirmed My Domain is configured 
  •  Confirmed both Developer Edition orgs are accessible 
  •  Confirmed the SalesforceDX Namespace Registry Connected App exists 
  •  Confirmed the Connected App has OAuth enabled 
  •  Confirmed the required OAuth scopes are present: 
    •  Access the identity URL service 
    •  Manage user data via APIs 
  •  Disabled the org-level Require Proof Key for Code Exchange (PKCE) setting 
  •  Verified the relevant OAuth settings are disabled 
  •  Installed the latest Salesforce CLI 
  •  Salesforce CLI version: 
@salesforce/cli/2.149.9 win32-x64 node-v24.19.0

I also successfully authenticated both orgs through the CLI:

sf org login web --alias CharityFrontDevHub

sf org login web --alias CharityFrontNamespace

Both appear as Connected with sf org list.

The problem therefore appears to occur specifically when Salesforce's Namespace Registry → Link Namespace flow initiates its OAuth authorization.

Additional observation

The SalesforceDX Namespace Registry Connected App appears to be Salesforce-created/managed rather than an application I created for my project.

I also found references to other users experiencing a similar missing required code challenge error during the namespace linking process.

Has anyone encountered this recently with Developer Edition / Dev Hub orgs?

Is there a known Salesforce-side issue with the Namespace Registry OAuth flow, or is there another configuration that needs to be changed to provide the required PKCE code_challenge?

I'm using this for a package namespace, so I need to get the namespace linked to the Dev Hub before I can proceed with packaging.

Any guidance would be greatly appreciated.

 

#Salesforce Developer  #TrailblazerCommunity

4 个回答
  1. 昨天,11:43

    I am not able to disable the PKCE settings, asks me to contact support. Any workaround for this?  

    I am not able to disable the PKCE settings, asks me to contact support. Any workaround for this?

     

     

0/9000
4 个回答
0/9000

Same agent version behaves differently depending on channel, and I can't find any 

configuration difference to explain it. 

 

SETUP 

- Agentforce Service Agent built in the new Agentforce Builder (Agent Script) 

- One subagent, "Food Order", set as the start_agent 

- It owns one Flow action, "Process Customer Request" 

- Exposed on an Experience Cloud site via Embedded Messaging (Enhanced, Web/WebV1) 

- Routing: Messaging Channel > Omni-Flow > Route Work > Agentforce Service Agent 

- Messaging connection added in Agentforce Builder; its Inbound Routing section 

  correctly shows the Omni-Channel flow as Active 

 

WHAT WORKS — Builder Live Test (same active version) 

  Input > Reasoning: Food Order > Action: Process Customer Request 

        > Reasoning: Food Order > Output Evaluation: GROUNDED 

Returns the customer's real records correctly. 

 

WHAT FAILS — Experience Cloud portal (Channel: SCRT2 - EmbeddedMessaging) 

  Agent Interaction 

    __current_date_time__ 

    Miscellaneous_Category        <- Span: ClassifierStep 

    Reasoning 

    InstructionAdherence: LOW 

    Reasoning 

Subagents column: NOT_SET. No "Available Actions" span. Action never invoked, 

Flow never executes. Because no action is available, the model answers from 

generation only. 

 

REPRODUCED ACROSS 5 VERSIONS — classifier result never changed 

  V35  baseline (Top Agent > Router > Food Order)        Miscellaneous_Category 

  V36  classification description rewritten to explicitly name orders, recent 

       order, order history, order numbers (FO-00003), refunds, chargebacks, 

       returns, payment disputes, cases, Case IDs, support tickets — and to 

       say it must be preferred over general/miscellaneous handling 

                                                          Miscellaneous_Category 

  V37  action output binding changed                      Miscellaneous_Category 

  V38  Router deleted, Food Order made start_agent        Miscellaneous_Category 

  V39  Messaging connection added                         Miscellaneous_Category 

 

ALREADY VERIFIED (so these are not the cause) 

- Flow works: debugged with the portal's own MessagingSession record Id, returns 

  the correct records 

- Agent runtime user permissions, permission set licences, Flow and object access 

- Session > MessagingEndUser > User > Contact > Account resolution works on the 

  portal (authenticated user, correct Contact and Account) 

- Deployment Active, Messaging Channel Active, Omni-Flow Active and pointing at 

  the correct agent, fallback queue set 

- Only one agent version is Active; Einstein Bots is off, so no version pinning 

- No custom LWC components on the chat, no pre-chat field that alters the message 

- Miscellaneous_Category does not appear anywhere in the agent definition and 

  Setup exposes no control to remove, disable or deprioritise it 

 

QUESTIONS 

1. Why does the SCRT2 / Embedded Messaging entry path run a ClassifierStep that 

   selects the built-in Miscellaneous_Category instead of entering the agent's 

   configured start_agent, when the identical version in Builder Live Test enters 

   it correctly? 

2. Is there a configuration requirement for a custom subagent to be selectable by 

   the classifier on this channel that I've missed? 

3. Can Miscellaneous_Category be removed, disabled or deprioritised for an agent? 

4. Is this a known limitation of agents built in the new Agentforce Builder 

   (Agent Script) when deployed to Enhanced Chat V1 / Embedded Messaging? 

 

Has anyone got an Agent Script agent successfully entering a custom subagent on 

Embedded Messaging? 

 

#Salesforce Developer

0/9000

How are others handling Video Calls that fail to related to an Account due to prospects joining from their car or a conference room full of people?  We have more records unassigned than assigned and getting the Sales Users to related records back to the proper accounts after the fact is proving to be difficult.  I thought creating a flow that reviews names that DID log as joined against Contact and Lead records, as well as Video Call subject line would be helpful to at least populate another 10-20% of those blanks.  However upon reading more documentation, it looks like SF doesn't support additional flows to match unless we turn off org wide matching.   

How have others addressed this issue, or is it truly an Enablement/Sales issue?  Perhaps an addon tool like

Otter.ai

- or will that also conflict with existing matching?  

 

#Flow  #Agentforce  #Salesforce Developer  #Data Management

3 个回答
  1. 8月28日 15:56

    Hey Misty, 

     

    Your read is accurate: per Salesforce's own docs, Related Record Matching is an org-wide, all-or-nothing setting, when it's on, ECI runs its own algorithm (participant email/domain matching against Contact, Lead, Account) and populates the Related Record field automatically. If you want to run your own Flow-based matching logic instead (your name-against-Contact/Lead + subject line idea), you have to turn Related Record Matching OFF entirely, then a Flow becomes the only thing setting that field. You can't layer a supplemental Flow on top of the native matching to "catch the extra 10-20%", it's one or the other, not additive. 

     

    Given that, your options really are: 

    1. Turn off native matching, build your own Flow to replicate ECI's built-in logic PLUS your extra fallback rules (name-against-Contact/Lead, subject line parsing). This means you inherit responsibility for the baseline matching ECI already does well, not just the edge cases, that's a bigger lift than it initially sounds. 

    2. Keep native matching on, and instead build a separate Flow/batch job that runs afterward on unmatched records only, checking if Related Record is null, then applying your own supplemental logic to update it. This avoids fighting the native system since you're only touching records ECI already gave up on, not replacing its matching entirely. 

    3. Turn on Einstein Activity Capture integration alongside ECI, per Salesforce's own guidance, this specifically enhances guest participant matching quality, which sounds directly relevant to your "joining from a car/conference room" problem, worth testing before building custom logic at all. 

     

    On

    Otter.ai

    or similar tools: since ECI's matching is a Salesforce-side process, not tied to which video/transcription vendor recorded the call, a third-party transcription add-on wouldn't conflict with ECI's matching logic, but it also wouldn't replace or feed into it automatically. It solves a different problem (better transcript quality) than record-matching itself. 

     

    Given the scale you're describing, option 2 (supplement only nulls, don't disable native matching) is usually the least disruptive path, worth prototyping that before considering a full matching rebuild. 

     

    Reference:

    https://help.salesforce.com/s/articleView?language=en_US&id=sales.call_coaching.htm&type=5

0/9000

I need help troubleshooting a public Experience Cloud Flow for a Transitional Coach Application. The Flow works in Debug mode: it creates an Application record and sends an email. However, when I submit it through the published site in an incognito/private browser, it reaches the end but does not create the record or send the email. 

The site has a Guest User profile named “Transitional Coach Application Profile,” and Read/Create are enabled on the Application object. I need someone to identify the guest-user/Flow-context issue and help me test the fix. I can share screenshots and grant supervised screen-share access. Thanks 

 

#Salesforce_developer  #Beginner Developer  #Salesforce Developer  #Developers Edition

4 个回答
  1. 9月10日 15:40

    Hi CM Seb, 

     

    Two separate root causes here, both well-documented, and both explain your exact symptom (works as admin in Debug, silently does nothing for guest users on the live site). 

     

    1. Record creation not happening: most likely the flow isn't actually enabled for the Guest User profile, even if it "worked" in Debug. 

    Profile-level object permissions (Read/Create on Application) are necessary but not sufficient. You also need to explicitly grant the flow itself to guest users, this is a separate step from object permissions: 

       - Experience Builder > Settings (gear icon) > General tab > confirm "Guest users can see and interact with the site without logging in" is checked, then click the guest user profile link. 

       - Under Enabled Flow Access, click Edit, and confirm your Transitional Coach Application flow is moved into the Enabled Flows column (not just present in the Available list). 

       Reference:

    https://help.salesforce.com/s/articleView?id=experience.rss_flow_guestuser.htm&type=5

     

     

       This is the single most common cause of "works when I test it logged in, does nothing for actual guest visitors", the flow needs this explicit enablement separate from object CRUD permissions. 

     

    2. Emails not sending: this is a hard platform restriction, not a config you're missing. 

    As of Spring '23, Salesforce permanently removed the "Send Email" system permission from the Guest User profile across ALL orgs, and since permission sets can't be assigned to guest users either, there is no way to grant this back declaratively. This is intentional (anti-spam/abuse prevention for public-facing guest contexts), not a bug. 

     

       Workaround: don't send the email directly from the guest-context flow. Instead: 

       - Have the guest flow create the Application record only. 

       - Use a separate Record-Triggered Flow on the Application object (After Save), running as an internal/system context, not the guest user, to send the confirmation email. Since this second flow runs on the object trigger rather than in the guest user's session, it isn't restricted by the Guest User "Send Email" removal. 

     

    Given your record creation is also failing (not just email), I'd fix #1 first, that's likely blocking everything, and once records start getting created successfully, wiring up a Record-Triggered Flow for the email (per #2) will resolve the email gap cleanly without depending on guest user email permissions at all.

0/9000
0/9000

商談オブジェクトに紐づく活動が何件あるのかレポートで抽出したい。どの様にしたらいいか。 

 

#Salesforce Admin  #Salesforce Developer  #Sales Cloud

5 个回答
  1. 9月10日 15:19

    どういたしまして、Maiko様。無事に解決して良かったです。また何かあれば、いつでもこちらのコミュニティで聞いてください。

0/9000
3 个回答
  1. 9月10日 12:48

    Hi @Hitesh Sharma

     

     You can handle this using an after-update Opportunity trigger + Queueable Apex. First, collect the unique Account IDs where the Opportunity changes to Closed Won, then pass those IDs to a single Queueable job. 

    In the Queueable, query the related Accounts and Opportunities, determine the latest Closed Won Opportunity for each Account, and update the Account Description in one bulk DML operation. 

    This approach avoids SOQL/DML inside loops and handles bulk updates safely. Salesforce recommends bulkifying both SOQL and DML operations. 

    Also, use a Set<Id> for Account IDs to ensure the same Account is processed only once.  

     

    Code: 

    trigger OpportunityTrigger on Opportunity (after update) { 

        Set<Id> accountIds = new Set<Id>(); 

     

        for (Opportunity opp : Trigger.new) { 

            Opportunity oldOpp = Trigger.oldMap.get(

    opp.Id

    ); 

     

            if (opp.StageName == 'Closed Won' && 

                oldOpp.StageName != 'Closed Won' && 

                opp.AccountId != null) { 

                accountIds.add(opp.AccountId); 

            } 

        } 

     

        if (!accountIds.isEmpty()) { 

            System.enqueueJob(new UpdateAccountDescriptionQueueable(accountIds)); 

        } 

     

    Then the Queueable can query the latest Closed Won Opportunity per Account and perform one bulk update on the Accounts. 

    One important consideration: because the requirement is “latest Opportunity Name”, don't simply use the Opportunity from Trigger.new; if multiple Opportunities for the same Account are updated in the same transaction or an older Closed Won Opportunity already exists, the Queueable should determine the latest record from the database. 

    This follows Salesforce's bulk-processing guidance and keeps the trigger lightweight.  

     

    Hope This Helps!!

0/9000

こんにちは! 

営業メンバーからの依頼です。 

商談の活動「活動記録」(ToDo)のリストビュー上で、活動した内容をコメント作成・追記したいとのリクエストがあり、リストビューに画面フローを構築すればできそうだ というところまでは確認できているのですが、如何せん画面フローの知識が乏しく、お知恵をお借りしたいです。 

 

#Trailhead Challenges  #Trailhead  #Salesforce Developer  #Flow

2 个回答
  1. 昨天,15:46

    和人様 

     

    こんにちは。リストビュー上で画面フローを使ってコメント作成・追記を行う実装は可能です。以下、標準機能のみで完結する構成で解説します(今回は「1件ずつコメントを追記する」パターンを前提とし、複数選択して一括処理したい場合の応用も併記します)。 

     

    ■ 全体構成 

    1. スクリーンフロー(画面フロー)を作成 

    2. Task(活動記録)オブジェクトの リストビューボタン からこのフローを起動 

    3. フローで対象レコードのIDを受け取り、コメント入力用の画面を表示、既存の内容に追記して更新 

     

    ■ フロー構築手順 

     

    1. 「新規フロー」→「画面フロー」を選択 

     

    2. 変数を作成 

       ・名前: recordId(1件選択の場合)または ids(複数選択チェックボックスの場合) 

       ・データ型: テキスト(recordIdの場合)またはテキストのコレクション(idsの場合) 

       ・「入力のみで使用可能にする」にチェック 

       ※ この変数名は仕様として決まっており、リストビューの詳細ページボタンからは「recordId」、リストビューのチェックボックス選択(一括処理)からは「ids」という変数名で自動的にIDが渡されます。 

       参照:

    https://help.salesforce.com/apex/HTViewHelpDoc?id=platform.flow_ref_elements_screencmp_action_button.htm

     

     

    3. 「レコードを取得」要素を追加 

       ・オブジェクト: Task 

       ・条件: Id が {!recordId} と等しい 

       ・「複数のレコードを取得するように選択されている場合のみ、複数レコードを自動的に格納」のオプションは今回は単一取得でOK 

       ・取得した Description(活動内容)などの既存フィールドをそのまま画面に引き継ぎます 

     

    4. 「画面」要素を追加 

       ・長文テキストの入力コンポーネントを配置(例: 「追記コメント」) 

       ・初期値に、手順3で取得した既存の Description の内容を表示させておくと「追記」らしくなります 

         例: {!Get_Task.Description} & " 

     

    " & (ここにユーザー入力用の空欄を用意) 

       実際には「既存内容を表示する読み取り専用テキスト」+「新規コメント入力欄」の2つに分けたほうが、ユーザーが誤って過去の記録を消してしまうミスを防げます 

     

    5. 「代入」要素を追加 

       ・新しいDescriptionの値 = 既存のDescription & 改行 & 日時 & ユーザー名 & 新規コメント入力内容 

       ・{!$Flow.CurrentDateTime} や {!$User.FirstName} などのグローバル変数を使うと「誰がいつ追記したか」が残せます 

     

    6. 「レコードを更新」要素を追加 

       ・対象: 手順3で取得したTaskレコード 

       ・Description項目に手順5で組み立てたテキストを設定 

     

    7. フローを保存・有効化 

     

    ■ リストビューへのボタン設置手順 

     

    1. 設定 → オブジェクトマネージャ → タスク(Task)を開く 

    2. 「ボタン、リンク、およびアクション」→「新規ボタンまたはリンク」 

    3. 表示種別: 「リストボタン」、コンテンツソース: 「URL」 

    4. URL欄に以下を設定: 

       /flow/あなたのフローAPI名?retURL=/lightning/o/Task/list 

     

    5. 保存後、「検索レイアウト」または「リストビューボタンレイアウト」の編集画面で、作成したカスタムボタンを「選択されたボタン」に追加して保存 

     

    参照(同じ仕組みの公式標準コンポーネント解説): 

    https://help.salesforce.com/apex/HTViewHelpDoc?id=platform.flow_ref_elements_screencmp.htm

     

     

    ■ 補足(複数レコードへの一括コメント追記がしたい場合) 

    手順2の変数を「ids(テキストのコレクション)」にし、手順3を「ループ」要素で回して1件ずつ同じ処理を繰り返す構成にすれば、リストビューでチェックボックスにより複数選択→一括コメント追記も実現できます。この場合はガバナ制限(SOQL・DML回数)に注意し、ループ内では都度Get Recordsを呼ばず、事前に一括取得してからループするのが定石です。 

     

    まずは「1件ずつ追記」の構成から作ってみて、動作確認できたら複数選択対応に拡張するのがおすすめです。不明点があれば、どのステップで詰まったか教えてください。

0/9000