【第423回】 Agentforce : 顧客メールアドレスが有効であるかを確認する方法
今回は Salesforce の無料の開発環境 を使って、ゼロから「顧客のメールアドレスが有効であるか」を確認する仕組みを作ってみたいと思います。
メールアドレスの認証設定は大きく分けて、以下の 2 つです。
認証コードを送るフロー と その Agent アクション
認証コードを受け取って検証するフロー と その Agent アクション
今回のシナリオは、自社の顧客ではない方も含め、一般的な FAQ の対応を行う Service Agent が回答できない質問が来た場合に、メールアドレスを聞いて、ケースを自動的に作成して、カスタマーサービスのスタッフが、後日、回答をできるようにするという流れ(エスカレーションの一種)にしたいと思います。
まず、今回 Service Agent を利用しますので、以下の記事を元に作成をお願いします。(※流れ的には、上の記事から順に処理してください。)
Cloudpages のような外部サイトを持っていないでも、Agentforce Builder のプレビュー内だけで検証可能ですので、その場合は外部サイトには表示せず、エージェントの作成だけで結構です。
さて、無料の開発環境の場合、Data Cloud の有効化と Knowledge の有効化などから開始する必要があります。最初から躓いた場合は以下を参考にしてください。
Data Cloud の有効化

Kwnoledge の有効化

その後、諸々の手順に従い作業を行って、外部 Web サイト(Marketing Cloud Engagement の Cloudpages)に Service Agent を表示しました。
以下の通りです。本日は、ここから記事にしたいと思います。

現在、このエージェントでは、単純なナレッジを使った FAQ だけを行うエージェントになっています。

それでは今回の手順に入ります。大まかに、以下のような流れになります。
「認証コードを送るフロー」を作成
「認証コードを受け取って検証するフロー」を作成
「ケースを作成するフロー」を作成
「認証コードを送るフロー」を使った Agent アクションを作成
「認証コードを受け取って検証するフロー」を使った Agent アクションを作成
「ケースを作成するフロー」を使った Agent アクションを作成
「General FAQ」トピックの指示の書き換え
「Case Management」トピックの指示の書き換え
1.「認証コードを送るフロー」を作成
事前準備:
新規で作成された開発環境の場合、送信メールアドレスの設定が無いので、セットアップの「Organization-Wide Addresses」でメールアドレスの設定を行ってください。


設定手順:
さて、これから作る 3 つのフローは Agent からトリガーされるフローになりますのですべて「自動起動フロー(トリガーなし)」で作成します。

まず、以下で変数を作成してください。
この変数名は、一部「指示」でも利用しますので、同じ名前で命名しておくと後で楽です。
emailAddress:変数(テキスト)→ 入力で利用可能
verifCode:変数(テキスト)→ 出力で利用可能
authKey:変数(テキスト)→ 出力で利用可能
verifMessage:変数(テキスト)→ 出力で利用可能

変数を作成したらアクションを配置して、「Generate Verification Code」で検索して選択します。アクション名はそのまま「Generate Verification Code」とすると分かりやすいです。

この「Generate Verification Code」に関しては、Verification Code を生成するだけのアクションのため、配置したらそれで終わりです。
以下の 2 つが生成されます。

続いて、再びアクションを配置して「Send Email」で検索して選択します。これは通常のメール送信アクションです。

こちらのアクション名は任意ですが「Send Verification Code」などで良いと思います。
Recipient Addresses には先ほど作成した変数「emailAddress」を入力し、Sender Type は OrgWideEmailAddress で、Sender Email Address には事前準備したメールアドレスが表示されますので、そちらを選択します。

続いて、メールの件名、メールの本文には先ほどのアクションで取得した「The six digit generated verification code」をリソースから引っ張ってきます。そして、リッチテキスト、改行を許可します。

日本語で入力する場合は、以下を参考にしてください。
件名:
【重要】ワンタイムパスワードのお知らせ
本文:
いつもご利用いただきありがとうございます。
以下のワンタイムパスワード(OTP)を入力して、認証を完了してください。
━━━━━━━━━━━━━━━━━━
ワンタイムパスワード
{!Generate_Verification_Code.verificationCode}
━━━━━━━━━━━━━━━━━━
※ このメールに心当たりがない場合は、第三者が誤ってメールアドレスを入力した可能性があります。本メールは破棄してください。
※ 本パスワードは他人と共有しないでください。
ご不明な点がございましたら、サポートまでお問い合わせください。
――――――――――
ABC Company
サポートチーム
続いて、割り当て要素を配置して、名前は「Set Verification Code」としました。こちらでは、作成済みの変数(verifCode、authKey)に対して、生成されたキーとコードを割り当てます。

さらに、作成済みの変数 verifMessage を配置して、「I sent the code in your inbox.」と直に入力します。こちらは英語のままで良いです。

設定は以上ですので、こちらでフローを保存してください。名前は任意ですがこちらも後の指示で利用します。私は「Send Verification Code Flow」としました。

保存後、アクティブ化します。

2.「認証コードを受け取って検証するフロー」を作成
再び、新規で「自動起動フロー(トリガーなし)」を作成します。

次に利用する変数は、以下の通りなので、まずは作成してください。
先ほどは(verifCode、authKey)が「出力」でしたが、今回は受け取る側なので「入力」になっていますので注意してください。
isVerified:変数(ブーリアン)→ 出力で利用可能
verifCode:変数(テキスト)→ 入力で利用可能
authKey:変数(テキスト)→ 入力で利用可能
verifMessage:変数(テキスト)→ 出力で利用可能
変数を作成したらアクションを配置して、「Verify Customer Code」で検索して選択します。

アクション名はそのまま「Verify Customer Code」とすると分かりやすいです。こちらでは Authentication Key に 変数「authKey」を、Customer Code に 変数「varifCode」を入力します。

続いて、決定要素を配置して、名前を「Customer Verified」と入力します。左のパスを「True」、右を「False」としておき、先ほどのアクションの出力で得られている「Is Verified」を選択します。

値は True を選択してください。

続いて、割り当て要素を配置して、「Set Success」と名前を付けて、変数には作成済みの変数「IsVerified 」を入力します。

値は出力の Is Verified が入ります。事前に True で分岐しているので、この値は必ず True になります。

次に変数に VerifMessage を選択します。

こちらの値は「Success」と直に入力します。

続いて、反対のパスには、今作った Success の割り当て要素をコピーしたものを配置します。

こちらは Success の箇所を Failure に変更してください。

設定は以上なので、名前を付けて保存します。こちらは「Verify Customer Code Flow」と命名で宜しいかと思います。

保存ができたら有効化します。

3.「ケースを作成するフロー」を作成
続いて、ケースを作成するフローです。再び、新規で「自動起動フロー(トリガーなし)」を作成します。

利用する変数は、以下の通りなので、まずは作成してください。
caseDescription:変数(テキスト)→ 入力で利用可能
caseSubject:変数(テキスト)→ 入力で利用可能
caseRecord:変数(レコード)ケースオブジェクト → 出力で利用可能
caseRecord は、これまでに出現していない「レコード」変数です。オブジェクトは「ケース」を選択してください。

続いて、レコードの作成要素を配置して、「Create Case Record」と名前を付けて、設定方法を「手動」に切り替えて、「ケース」オブジェクトを選択します。

ケースの Subject 項目に作成済みの変数「caseSubject」を入力します。さらに Description 項目に作成済みの変数「caseDescription」を入力します。

続いて、レコードの取得要素を配置して、「Get Case Record」と名前を付けて、「ケース」オブジェクトを選択します。項目は「Case ID」を選択します。

値は、上でレコードの作成要素で作成されたばかりの「Case ID」を選択します。

続いて、チャット上で、この作成されたばかりのケース情報を顧客に表示(出力)したいので、レコード変数「caseRecord」に値を入れていきます。さらに下にスクロールして、以下の形で設定してください。

デフォルトで表示されている Id の他に以下の 5 つを入力します。
Subject
Description
CreatedDate
Status
CaseNumber

以上で完了なので、このフローを保存します。名前は「Create Case Flow」でよろしいかと思います。

保存できたら、フローを有効化します。

4.「認証コードを送るフロー」を使った Agent アクションを作成
続いて、エージェントを設定しますので、作成済みのエージェントを開いて、無効化して編集できる状態にして、新しいトピックを選択します。

新たに Case Management を選択します。

Case Management のトピックが追加されたら、紐づいているアクションを開き、一旦すべてのアクションを削除します。

続いて、新規アクションの追加を行います。

参照アクションタイプでは「Flow」を選択します。

ここで先ほど作成したフローが表示されますので、1 つずつ設定を行います。まずは「Send Verification Code Flow」です。

エージェントのアクションラベルから「Flow」を削除して、次へ進みます。

続いて、指示などを記載していきます。各指示のサンプルを掲載します。以下の通り入力しても問題ありません。
(英語版)
- Agent Action Instructions
Sends a generated verification code to the user’s email address.
- emailAddress (Input)
Pass the email address provided by the user.
- authKey (Output)
Stores the authentication key used to generate the verification code.
- verifCode (Output)
Stores the generated verification code.
- verifMessage (Output)
Stores a generic message that will be displayed to the user.
(日本語版)
- Agent Action Instructions
ユーザーのメールアドレス宛に、生成した認証コード(Verification Code)を送信します。
- emailAddress(入力)
ユーザーから提供されたメールアドレスを渡してください。
- authKey(出力)
認証コードの生成に使用される認証キー(Authentication Key)を格納します。
- verifCode(出力)
生成された認証コードを格納します。
- verifMessage(出力)
ユーザーに表示する共通メッセージ(案内文)を格納します。
この他の設定ですが、まず「Show loading text for this action(このアクションで読み込み中テキストを表示)」は「オフ」で構いません。そして、各入力・出力の設定は以下の通りです。
emailAddress(入力)
→ Require input にチェックを入れてください。
→ Collect data from user にチェックを入れてください。
authKey(出力)
→ Filter from agent action にチェックを入れてください。
→ Show in conversation はチェック不要です。
verifCode(出力)
→ Filter from agent action にチェックを入れてください。
→ Show in conversation はチェック不要です。
verifMessage(出力)
→ Filter from agent action はチェック不要です。
→ Show in conversation にチェックを入れてください。
(参考)
Require input(入力が必要)は、入力されたデータがなければ、このアクションを実行できないことをエージェントに伝えます。この設定を使用して、正常な実行に必要なデータなしでフローが実行されないようにします。
Collect data from user(ユーザーからデータを収集)は、顧客のみが知りえる情報であることをエージェントに伝えるものです。メールアドレスや注文番号のように顧客が知っている情報を聞く場合にチェックします。
Filter from agent action(エージェントアクションから除外)は、エージェントが推論や会話内で使って欲しくない変数をフィルタリングします。今回のような authKey や verifCode はエージェントが会話で使用しませんので、チェックを入れます。
Show in conversation(会話に表示)は、この内容を顧客に表示しても構わないことをエージェントに伝えるものです。このチェックボックスが選択されていない場合は、フロー変数の内容が顧客に共有されることはありません。
すべて設定できたら、完了をクリックします。

作成されましたら、作成された Agent アクションをクリックして開きます。

編集ボタンをクリックしたら、authKey に、authenticationKey をマッピングして、保存します。

5.「認証コードを受け取って検証するフロー」を使った Agent アクションを作成
再び、同じ Case Management 内にアクションを作成します。

前と同様 Flow から「Verify Customer Code Flow」を選択します。

アクション名では、Flow の部分を削除して命名し、保存します。

以下が各指示になります。
(英語版)
- Agent Action Instructions
Verifies whether the verification code entered by the user matches the code sent to the user’s email address.
- authKey (Input)
Pass the authentication key that was used to generate the verification code.
- verifCode (Input)
Pass the verification code entered by the user.
- isVerified (Output)
Stores the result indicating whether the verification code is valid.
- verifMessage (Output)
Stores the verification message to be displayed to the user interface.
(日本語版)
- Agent Action Instructions
ユーザーが入力した認証コードが、ユーザーのメールアドレス宛に送信された認証コードと一致するかを検証します。
- authKey(入力)
認証コードの生成に使用された認証キー(Authentication Key)を渡します。
- verifCode(入力)
ユーザーが入力した認証コードを渡します。
- isVerified(出力)
認証コードが正しいかどうかの検証結果を格納します。
- verifMessage(出力)
認証結果に応じて、ユーザーに表示するメッセージを格納します。
この他の設定ですが、前回同様「Show loading text for this action(このアクションで読み込み中テキストを表示)」は「オフ」で構いません。そして、各入力・出力の設定は以下の通りです。
authKey(入力)
→ Require input にチェックを入れてください。
→ Collect data from user はチェック不要です。
verifCode(入力)
→ Require input にチェックを入れてください。
→ Collect data from user にチェックを入れてください。
isVerified(出力)
→ Filter from agent action にチェックを入れてください。
→ Show in conversation はチェック不要です。
verifMessage(出力)
→ Filter from agent action はチェック不要です。
→ Show in conversation にチェックを入れてください。
すべて設定できたら、完了をクリックします。

作成されましたら、作成された Agent アクションをクリックして開きます。

編集ボタンをクリックしたら、authKey に authenticationKey を割り当てて、isVerified に isVerified をマッピングします。この 2 つのみ処理して、保存してください。

6. 「ケースを作成するフロー」を使った Agent アクションを作成
最後に「ケースを作成するフロー」も同様の処理を行います。

「ケースを作成するフロー」の作成画面を開きます。

以下が各指示になります。
(英語版)
- Agent Action Instructions
Creates a new case using the information provided by the user.This action takes the case subject and description and creates a case record in Service Cloud.
- caseDescription (Input)
Stores the details of the user’s issue to be used when creating the case.
- caseSubject (Input)
Stores the subject of the case to be created.
- caseRecord (Output)
Stores the case record created for the customer.
(日本語版)
- Agent Action Instructions
ユーザーから提供された情報をもとに、新しいケースを作成します。このアクションは、問い合わせ内容と件名を受け取り、Service Cloud にケースレコードを登録するために使用されます。
- caseDescription(入力)
ケース作成に使用する、ユーザーの問い合わせ内容(詳細)を格納します。
- caseSubject(入力)
作成するケースの件名を格納します。
- caseRecord(出力)
顧客によって作成されたケースレコードを格納します。
この他の設定ですが、前回同様「Show loading text for this action(このアクションで読み込み中テキストを表示)」は「オフ」で構いません。そして、各入力・出力の設定は以下の通りです。
caseDescription(入力)
→ Require input にチェックを入れてください。
→ Collect data from user はチェック不要です。(この生成はエージェント自身が自動的に行うためです。)
caseSubject(入力)
→ Require input にチェックを入れてください。
→ Collect data from user はチェック不要です。(この生成はエージェント自身が自動的に行うためです。)
caseRecord(出力)
→ Filter from agent action はチェック不要です。
→ Show in conversation にチェックを入れてください。
すべて設定できたら、完了をクリックします。

※この Agent アクションには変数のマッピングはありません。
7.「General FAQ」トピックの指示の書き換え
次に、General FAQ のトピックを構成します。以下を参考に上書き編集してください。
Tips:「トピック」の名前 や「アクション」の名前 は API 参照名に変更すると、より一般的な名称と区別されて精度が上がります。
(英語版)
Classification Description
This topic is intended to answer customer questions by searching knowledge articles and responding based on the information contained in those articles.
Scope
Your role is strictly limited to answering questions about the company, its products, business procedures, or policies by searching and using knowledge articles.
指示①
Highest Priority:For any question that can be answered using information stored in knowledge articles, you must always respond using the “Answer Questions with Knowledge” action.
指示②
When Knowledge Is Not Available:If no relevant knowledge article can be found and you are unable to provide an answer, politely apologize to the customer and clearly inform them that the information is not available.
指示③
Prohibited Actions:Unless the response is based on information retrieved from knowledge articles, you must not provide general information, assumptions, advice, or troubleshooting steps.
指示④
Transition to Case Creation:After providing an answer—or if you are unable to answer—always ask the user whether they would like to proceed with creating a case.
*Do not ask for a verification email address or any personal information upfront.
指示⑤
Creating a Case:Only if the user explicitly requests to create a case, switch to the “Case Management” topic and proceed accordingly.
(日本語版)
Classification Description
このトピックは、ナレッジ記事を検索し、その内容をもとにお客様の質問へ回答するためのものです。
Scope
あなたの役割は、ナレッジ記事を検索し、その情報を用いて、会社・製品・業務手順・ポリシーに関する質問へ回答することに限定されます。
指示①
最優先事項:ナレッジに格納されている内容で回答可能な質問については、必ず「Answer Questions with Knowledge」アクション を使用して回答してください。
指示②
ナレッジに情報が存在しない場合:該当するナレッジ記事が見つからず、回答できない場合は、顧客に丁寧にお詫びをし、対応できない旨を伝えてください。
指示③
禁止事項:ナレッジ記事の検索結果に基づかない限り、一般的な情報、推測による回答、アドバイス、またはトラブルシューティング手順を提供してはいけません。
指示④
ケース作成への遷移:回答後、または回答できなかった場合は、ケース作成に進んでよいかを必ずユーザーに確認してください。
※検証用メールアドレスや個人情報を、いきなり要求してはいけません。
指示⑤
ケース作成を行う場合:ユーザーがケース作成を希望した場合のみ、「Case Management」トピック に切り替えて対応してください。
これで設定を保存します。

8.「Case Management」トピックの指示の書き換え
いよいよ、最後です。次に Case Management のトピックを構成します。以下を参考に上書き編集してください。
Tips:「トピック」の名前 や「アクション」の名前 は API 参照名に変更すると、より一般的な名称と区別されて精度が上がります。
Classification Description
This topic is intended to handle customer interactions related to support cases.
It covers case-related actions such as providing case information and creating new cases.
Scope
Your role is strictly limited to retrieving and sharing case information and creating new cases based on customer requests.
Do not perform any actions outside of this scope.
Instruction ①
Knowledge Questions First:
For any questions related to knowledge, always respond using the “Answer Questions with Knowledge” action.
If the required information is not available in knowledge articles, politely apologize and ask the customer whether they would like to proceed with creating a case.
Do not ask for an email address at this stage.
Instruction ②
Authentication (Required):
Before performing any case-related actions (retrieve, update, or create), you must verify the customer’s identity.Use the “Send Verification Code” action to start the authentication process.
Use the email address provided by the customer as the input value “emailAddress” for this action.
Instruction ③
Authentication Constraints:
If the verification code is entered incorrectly twice consecutively, ask the customer to re-enter their email address.
Then, re-run the “Send Verification Code” action to restart the authentication process from the beginning.
Upon successful authentication, display the verification completion message contained in “verifMessage.”
Once a user has been authenticated, switching to another user within the same conversation session is not permitted under any circumstances.
During the authentication process, do not display or disclose the verification code to the customer.
This information must always be treated as confidential.
Instruction ④
Sharing Case Information:
When sharing case details with the customer, display the following fields as a bulleted list:
- Case number
- Subject
- Description
- Status
*The Description field must store the email address (emailAddress) used for authentication.
Instruction ⑤
Creating a New Case:
When a customer requests case creation, perform the following steps:
- Summarize the conversation so far.
- Subject: Provide a concise, high-level summary of the customer’s inquiry.
- Description: Include
"What the customer asked"
"Any important data"
"Any information necessary for a customer service representative to understand the context"
When creating the case, always include the email address specified in “emailAddress” in the case record’s Description field.
Instruction ⑥
Language and Communication:
- GuidelinesDo not use the term “support team.” Always refer to “customer service representatives.”
- If the response requires additional time, clearly inform the customer that the reply may be provided on the following day or later.
(日本語版)
Classification Description
このトピックは、サポートケースに関する顧客対応を行うためのものです。ケース情報の提供、新規ケースの作成など、ケースに関連する一連の対応を扱います。
Scope
あなたの役割は、顧客の依頼に応じて、ケース情報の取得・共有と新規ケースの作成を行うことです。それ以外は行わないでください。
指示①
ナレッジ対応の優先:
ナレッジに関する質問については、必ず「Answer Questions with Knowledge」アクション を使用して回答してください。
ナレッジに情報が存在しない場合は、丁寧にお詫びをしたうえで、ケースを作成してよいかを顧客に確認してください。
※この段階で、いきなりメールアドレスを尋ねてはいけません。
指示②
認証の実施(必須):
ケースに関するアクション(参照・更新・作成)を実行する前に、必ずメールアドレスを確認し、認証を行ってください。
認証開始には 「Send Verification Code」アクション を使用します。
顧客が入力したメールアドレスは、このアクションの入力値 「emailAddress」 として使用してください。
指示③
認証に関する制約:
認証コードを 2 回連続で誤入力 した場合は、再度メールアドレスの入力を求めてください。
その後、「Send Verification Code」アクションを再実行 し、認証プロセスを最初からやり直します。
認証に成功した場合は、「verifMessage」 に含まれる認証完了メッセージを表示してください。
一度認証された後、同一会話セッション内で別のユーザーに切り替えることは一切許可されません。
認証プロセス中、認証コードを顧客に再表示または開示してはいけません。これらの情報は常に機密として扱ってください。
指示④
ケース情報の共有:
顧客にケースの詳細を共有する際は、以下の項目を箇条書きで表示してください。
- Case number
- Subject
- Description
- Status
※ なお、Description 項目には、認証に使用したメールアドレス(emailAddress)を値として保持してください。
指示⑤
新規ケースの作成:
顧客からケース作成を依頼された場合は、以下を行ってください。
- これまでの会話内容を要約する
- Subject:問い合わせ内容を高レベルで簡潔に要約
- Description:「顧客が何を尋ねたのか」、「重要なデータ」、「カスタマーサービス担当者が文脈を理解するために必要な情報」
※ケース作成時は、「emailAddress」 に設定したメールアドレスをケースレコードの 「Description」 に必ず含ませてください。
指示⑥
表現・コミュニケーション上の注意:
- 「サポートチーム」という表現は使用せず、「カスタマーサービス担当」 と表現してください。
- 「対応を進めるためお待ちいただく場合」は、返信が翌日以降になる可能性があること を明確に伝えてください。
これで設定を保存します。

9. 実際の画面で確認する
これですべての設定が完了しましたので、外部 Web サイト上の Service Agent を使って実際の動作を確認してみます。
※ エージェントの有効化を忘れずにお願いします。
まず、ナレッジに存在しない質問をします。「退会したいのですが、どのようにしたら良いですか?」と尋ねます。すると、退会方法に関するナレッジがないため、「ケースの作成」が促されます。

「はい」と回答すると、本人確認のためのメールアドレスを求められましたので、メールアドレスを入力して送信します。

すると、入力したメールアドレスに確認コードが送信されます。

メールを確認すると、確認コードが送信されていることが分かります。

確認コードを入力して送信します。

すると以下の通り、ケースが作成されたことが示されました。

ケースオブジェクトを確認しに行くと、ケースが作成されていることが分かります。成功です。

いかがでしたでしょうか。
標準のフローアクションを利用するだけで、まったくの開発不要でエージェントの構築が実現できることを確認していただけたと思います。Agentforce の設定は、どうしても長めの設定にはなるのですが、この機会に、ぜひ一度お試しください。
今回は以上です。
