この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ケースフィードとやりとりするカスタムコンソールコンポーネントの作成

使用可能なインターフェース: Salesforce Classic
使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition

カスタムコンソールコンポーネントを使用すると、Salesforce コンソールの機能を拡張でき、ケースフィードパブリッシャーに追加したアクションとやりとりするコンポーネントを作成できます。たとえば、事前に作成されたカスタマイズ済みのテキストを生成するコンポーネントを開発し、そのテキストをケースフィードのポータルアクションで新しい投稿に追加し、投稿をポータルに送信する操作を、ワンクリックですべて行うことができます。

これらのイベントは、パブリッシャー JavaScript API で Sfdc.canvas.publisher オブジェクトの publish メソッドを使用して公開できるため、コンソールコンポーネントがケースフィードのクイックアクションとやりとりできるようになります。

publisher.selectAction

説明 ペイロードの値 使用可能なバージョン
指定されたアクションを選択し、そこにフォーカスを移動します。 actionName — 選択するアクション。サポートされている値は、次のとおりです。
  • action_name – 作成、活動の記録、またはカスタム Visualforce クイックアクション。たとえば、取引先責任者の作成アクションの action_namecreate_contact のようになります。
  • Case.CaseComment — ケースフィードのポータルアクション
  • Case.ChangeStatus — ケースフィードの状況の変更アクション
  • Case.Email — ケースフィードのメールアクション
  • Case.LogACall — ケースフィードの活動の記録アクション
  • FeedItem.TextPost — 標準 Chatter 投稿アクション (API バージョン 32.0 以降で使用可能)
  • SocialPostAPIName.SocialPost — ソーシャル投稿アクション (API バージョン 32.0 以降で使用可能)
API バージョン 29.0 以降で使用できます。

コードサンプル

次のコードスニペットは、メールアクションを選択し、そこにフォーカスを移動します。

Sfdc.canvas.publisher.publish({name:"publisher.selectAction",payload:{actionName:"Case.Email"}});

publisher.setActionInputValues

説明 ペイロードの値 使用可能なバージョン
アクションのどの項目に特定の値を入力する必要があるかと、その値を指定します。 actionName — 入力する必要がある項目でのアクション。
有効な項目値は、指定するアクションによって異なります。
  • emailFieldsCase.Email で使用できます。ケースフィードのメールアクションで使用できる標準項目です。
    • to
    • cc
    • bcc
    • subject
    • body
    • template
  • portalPostFieldsCase.CaseComment で使用できます。ケースフィードのポータルアクションで使用できる標準項目です。
    • body
    • sendEmail (boolean)
  • targetFieldsCase.ChangeStatusCase.LogACallFeedItem.TextPost、およびソーシャルアクションで使用できます。次のアクションで使用できる標準項目です。
    • Case.ChangeStatus: commentBody
    • Case.LogACall: description
    • FeedItem.TextPost: body

      body の���性は value および insertType です (省略可能)。insertType の有効な値は、beginendcursor、および replace です。デフォルト値は、replace です。(API バージョン 32.0 以降で使用可能)。

    • SocialPostAPIName.SocialPost では、content および insertType です (省略可能)。insertType の有効な値は、beginendcursor、および replace です。デフォルト値は、replace です。(API バージョン 32.0 以降で使用可能)。
  • parentFieldsCase.ChangeStatusCase.Email、および Case.LogACall で使用できます。ケースの標準項目およびカスタム項目です。参照項目はサポートされません。
API バージョン 29.0 以降で使用できます。

コードサンプル

次のコードスニペットは、メールメッセージの項目に定義済みの値を入力し、関連ケースの状況を [Closed (クローズ)] に設定します。

1Sfdc.canvas.publisher.publish({name:"publisher.setActionInputValues",
2    payload:{actionName:"Case.Email",parentFields: {Status:{value:"Closed"}},
3    emailFields: {to:{value:"customer@company.com"},cc:{value:"customer2@company.com"},
4    bcc:{value:"supervisor@company.com"},
5subject:{value:"Your Issue Has Been Resolved"},
6    body:{value:"Thank you for working with our support department.
7        We've resolved your issue and have closed this ticket, but 
8        please feel free to contact us at any time if you encounter this
9        problem again or need other assistance."}}}});

このコードスニペットによって、投稿アクションの本文の現在のカーソル位置に語句「Hello World」が挿入されます。

1Sfdc.canvas.publisher.publish({name:"publisher.setActionInputValues", payload:{actionName:"FeedItem.TextPost", targetFields:{body:{value:"Hello World", insertType:"cursor"}}}});

invokeAction

説明 ペイロードの値 使用可能なバージョン
指定されたアクションの送信機能 (メールの送信やポータルコメントの投稿など) をトリガします。 actionName — 送信機能のトリガ対象となるアクション。次のアクションがサポートされています。
  • Case.Email
  • Case.CaseComment
  • Case.ChangeStatus
  • Case.LogACall
  • FeedItem.TextPost (API バージョン 32.0 以降で使用可能)
  • SocialPostAPIName.SocialPost (API バージョン 32.0 以降で使用可能)
API バージョン 29.0 以降で使用できます。

コードサンプル

次のコードスニペットは、メールアクションで送信機能をトリガし、メールメッセージの送信と関連フィード項目の生成を行います。

Sfdc.canvas.publisher.publish({name:"publisher.invokeAction",payload:{actionName:"Case.Email"}});

customActionMessage

説明 ペイロードの値 使用可能なバージョン
カスタムイベントをカスタムアクションに渡します。Visualforce ベースのカスタムアクションでのみサポートされます。 actionName — イベントを渡す先となる Visualforce カスタムアクション。

message – カスタムアクションに渡すイベント。

API バージョン 29.0 以降で使用できます。

コードサンプル

次のコードスニペットは、Hello world イベントをアクション my_custom_action に渡します。

Sfdc.canvas.publisher.publish({name:"publisher.customActionMessage", payload:{actionName:"my_custom_action", message:"Hello world"}});

次のコードスニペットは、my_custom_action で Hello world イベントをリスンするために使用されます。

Sfdc.canvas.publisher.subscribe([{name : "publisher.customActionMessage", onData : function(e) {alert(e.message);}}]);

使用事例

Universal Cable では、全米で数 100 万人もの電話/ケーブル顧客にサービスを提供し、さまざまな規模のコールセンターに 4000 人のサポートエージェントを有しています。Universal では、Salesforce ナレッジに含まれる会社の大量の記事にエージェントが簡単にアクセスでき、サポートコストを抑えるためにメールを通して顧客と記事を共有したいと考えています。

Universal では、publish のイベントを使用して、次のようなカスタムコンソールコンポーネントを作成しました。
  • 最近公開されたものから順に、ナレッジ記事のリストを表示する。
  • エージェントは、タイトルをクリックして記事を参照できる。
  • エージェントは、コンソールコンポーネントで [メール] ボタンをクリックすることで、記事の完全な書式設定済みテキストをケースフィードのメールアクションでメッセージに追加できる。
ナレッジコンソールコンポーネントがあるケースフィード

コードサンプル

次のコードスニペットは、以下の Visualforce ページで使用されるカスタムコントローラを含む Apex クラスを示します。

1public with sharing class KBController {    
2   public List<FAQ__kav> articles {getset;}       
3
4    public KBController() {       
5       articles = [select knowledgearticleididtitlecontent__c from FAQ__kav where 
6      publishstatus = 'Online' and language='en_US' order by lastpublisheddate];    
7   }
8}

次のコードサンプルは、上記の使用事例でカスタムコンソールコンポーネントとして使用される Visualforce ページを示します。

1<apex:page sidebar="false" controller="KBController">   
2   <script type='text/javascript' src='/canvas/sdk/js/publisher.js'/>   
3   <style>
4      .sampleTitle { background-color: #99A3AC;color:#FFFFFF;font-size:1.1em;
5      font-weight: bold;padding:3px 6px 3px 6px; }  
6      .sampleHeader { }  
7      .sampleArticleList { min-width: 250px; padding: 8px 0 5px 0;}  
8      .sampleUl { padding: 0; margin: 0; list-style: none;}  
9      .sampleLi { display: block; position: relative; margin: 0;}  
10      .sampleRow { min-height: 16px; padding: 4px 10px;}  
11      .emailBtn { margin: 1px 1px 1px 3px; padding: 3px 8px; color: #333; 
12         border: 1px solid #b5b5b5; border-bottom-color: #7f7f7f; background: #e8e8e9; 
13         font-weight: bold; font-size: .9em; -moz-border-radius: 3px;
14         -webkit-border-radius: 3px; order-radius: 3px; }  
15      .emailBtn:active { background-position: right -60px; border-color: #585858; 
16         border-bottom-color: #939393; }       
17      .sampleArticle { padding-left: 4px; padding-bottom: 2px; font-weight: bold; 
18         font-size: 1em; color: #222; }  
19      .sampleLink { color: #015ba7; text-decoration: none; font-weight: bold; 
20         font-size: .9em; }    
21   </style>    
22   <script>
23      function emailArticle(content) {   
24         Sfdc.canvas.publisher.publish({name: 'publisher.selectAction', 
25         payload: { actionName: 'Case.Email'}}); 
26         Sfdc.canvas.publisher.publish({name: 'publisher.setActionInputValues', 
27         payload: {
28            actionName: 'Case.Email',
29            emailFields: { body: { value:content, format:'richtext', insert: true}}
30         }});
31     }
32   </script>
33   <div style="margin-left:-10px;margin-right:-10px;">
34      <div class="sampleTitle">Latest Articles</div>
35      <div class="sampleHeader" style=""></div>
36      <div class="sampleArticleList">
37         <apex:repeat value="{!articles}" var="article">
38            <ul class="sampleUl">
39               <li class="sampleLi">
40                  <div class="sampleRow">
41                  <div style="display:none;" id="content_{!article.id}">
42                     <apex:outputText value="{!article.content__c}" escape="false"/>
43                  </div>
44                     <input type="button" title="Email" value="Email" class="emailBtn" 
45                        onclick="emailArticle(document.getElementById
46                           ('content_{!article.id}').innerHTML);"/>
47                           <span class="sampleArticle">
48                               <a href="/{!article.knowledgearticleid}"
49                                   title="{!article.title}" class="sampleLink">
50                                  {!article.title}</a>
51                           </span>
52                  </div>
53               </li>
54            </ul>
55         </apex:repeat>
56      </div>
57   </div>
58</apex:page>