Open CTI 開発者ガイド

Open CTI 開発者ガイド
バージョン 34.0, Summer ’15
@salesforcedocs
最終更新日: 2015/5/21
© Copyright 2000–2015 salesforce.com, inc. All rights reserved. Salesforce およびその他の名称や商標は、salesforce.com,
inc. の登録商標です。本ドキュメントに記載されたその他の商標は、各社に所有権があります。
目次
第 1 章: Open CTI の導入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Open CTI を使用するケース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Open CTI サポートポリシー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
後方互換性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
API サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
その他のリソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Open CTI 表記規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Open CTI を使用した サンプル HTML ページ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
第 2 章: コールセンター定義ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
コールセンター定義ファイルの XML 形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
コールセンターの必須要素と必須属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
コールセンターの省略可能な要素と属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
<item> 要素の値の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
コールセンター定義ファイルのサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
第 3 章: Open CTI の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Open CTI への接続 . . . . . . .
Open CTI での非同期コール
Force.com Canvas の使用 . .
ベストプラクティス . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
15
15
16
第 4 章: Salesforce アプリケーション操作用のメソッド . . . . . . . . . . . . . . . . . . . . . 17
getPageInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
isInConsole() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
isVisible() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
notifyInitializationComplete() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
onFocus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
refreshPage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
refreshRelatedList() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
runApex() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
saveLog() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
screenPop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
searchAndGetScreenPopUrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
searchAndScreenPop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
refreshObject() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
setVisible() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
onObjectUpdate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
目次
第 5 章: コンピュータテレフォニーインテグレーション (CTI) のメソッド . . . . . . . 41
disableClickToDial() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
enableClickToDial() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
getCallCenterSettings() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
getDirectoryNumbers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
getSoftphoneLayout() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
onClickToDial() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
setSoftphoneHeight() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
setSoftphoneWidth() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
第 6 章: 用語集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
第1章
Open CTI の導入
Salesforce CRM Call Center は、Salesforce とサードパーティのコンピュータテレフォニーインテグレーション (CTI) シ
ステムを融合します。Open CTI が導入される前は、Salesforce ユーザは、CTI アダプタプログラムをコンピュータ
にインストールしなければ、CTI システムの機能を使用できませんでした。また、そのようなプログラムには
メンテナンスが必要なデスクトップソフトウェアが含まれていたため、クラウドアーキテクチャの本来の利点
が生かされていないことが多くありました。Open CTI では、開発者は次のことを実行できます。
• CTI アダプタを使用せずに Salesforce と統合する CTI システムを構築する。
• Salesforce および Salesforce コンソールと完全に統合されたパーツとして機能するカスタマイズ可能なソフト
フォン (通話管理ツール) を作成する。
• Mac、Linux、または Windows マシン上の Microsoft® Internet Explorer®、Mozilla® Firefox®、Apple® Safari®、または Google
Chrome™ 向けの CTI などブラウザおよびプラットフォームにとらわれない CTI システムを提供する。
このガイドを使用するには、次の基本事項を理解しておく必要があります。
• CTI
• JavaScript
• Visualforce
• Web サービス
• ソフトウェア開発
• Salesforce コンソール
• Salesforce CRM Call Center
このガイドでは、Open CTI を JavaScript で使用して、API コールとプロセスを組み込む方法を説明します。Open
CTI は、JavaScript ページで使用する場合にのみ有効です。このガイドの例では、JavaScript が使用されています。
ここで説明されていう機能は、Professional Edition、Enterprise Edition、Unlimited Edition、Performance Edition、または
Developer Edition を所有している組織で使用できます。
Open CTI は、ブラウザベースの JavaScript API です。Open CTI は、ソフトフォンを表示するためのクライアントと
してブラウザを使用します。Open CTI:
• 所定のリリースのAPIバージョンと一致します。たとえば、SOAP APIの現在のバージョンが 25.0 の場合、Open
CTI もバージョン 25.0 が使用されます。
• サポートされるブラウザの最小要件は次のとおりです。Internet Explorer 8、Firefox 3.6、Safari 4、または Chrome
11.0。
Open CTI を使用するケース
Open CTI を使用すると、高度なスキルを持つシステム管理者と開発者は、CTI (コンピュータテレフォニーイン
テグレーション) システムを開発してサードパーティの CTI システムを Salesforce と統合できます。そうすること
で、Salesforce ユーザが CTI アダプタをマシンにインストールしなくてもソフトフォンを使用できるようになり
ます。たとえば、ユーザがクライアントアプリケーションをダウンロードおよびインストールする必要なく
1
Open CTI の導入
Open CTI を使用するケース
CTI システムの機能にアクセスできるように、Open CTI を使用してカスタムソフトフォンを Salesforce と統合でき
ます。Open CTI は、Salesforce で CTI 機能を表示するためのクライアントとしてブラウザを使用する API です。
次の表に、開発者が Salesforce 組織のカスタム機能を実行するために使用できるその他の機能を示します。
機能
説明
SOAP API
一度に 1 つのレコードタイプのみを処理し、トランザクション制御 (Savepoint の設
定や変更のロールバックなど) を必要としない複合アプリケーションに機能を追加
する場合、標準の SOAP API コールを使用します。
詳細は、『SOAP API 開発者ガイド』を参照してください。
Visualforce
Visualforceでは、タグベースのマークアップ言語を使用して、開発者はより効果的
にアプリケーションを開発したり、Salesforce のユーザインターフェースをカスタ
マイズしたりできます。Visualforce を使用して、次のことができます。
• ウィザードやその他のマルチステッププロセスの構築
• アプリケーションを介した独自のカスタムフローコントロールの作成
• 最適かつ効果的なアプリケーションの相互作用を目的とした、ナビゲーション
パターンやデータ固有ルールの定義
詳細は、『Visualforce 開発者ガイド』を参照してください。
Salesforce コンソールイン
テグレーションツール
キット
Salesforce コンソールインテグレーションツールキットは、Salesforce コンソールの
カスタム機能を実装する場合に役立ちます。たとえば、Salesforce コンソールイン
テグレーションツールキットを使用して、Visualforceページまたはサードパーティ
製のコンテンツを Salesforce コンソールのタブとして表示できます。Salesforce コン
ソールインテグレーションツールキットは、ブラウザをクライアントとして使用
し、コンソールにページを表示するための API です。
Apex
次のような場合に Apex を使用します。
• Web サービスを作成する
• メールサービスを作成する
• 複数のオブジェクトに複雑な検証を実行する
• ワークフローでサポートされていない複雑なビジネスプロセスを作成する
• カスタムトランザクションロジック (1 つのレコードやオブジェクトだけでな
く、トランザクション全体で発生するロジック) を作成する
• レコードの保存などの別の操作にカスタムロジックを追加し、ユーザインター
フェース、Visualforce ページ、SOAP API のいずれから操作が実行されても、ロ
ジックが実行されるようにする
詳細は、『Force.com Apex コード開発者ガイド』を参照してください。
2
Open CTI の導入
Open CTI サポートポリシー
Open CTI サポートポリシー
Open CTI で機能強化が含まれるバージョンは、最新リリースのみです。以前のバージョンには、修正が含まれ
ていない可能もあります。新しいバージョンがリリースされても、以前のバージョンを引き続き使用できま
す。
後方互換性
Salesforce では、Open CTI プラットフォームを使用する際に後方互換性を容易に確保できるよう努めています。
新しい Salesforce リリースは、次の 2 つのコンポーネントで構成されています。
• Salesforce システムにある新しいリリースのプラットフォームソフトウェア
• 新しいバージョンの API
たとえば、Summer '12 リリースには API バージョン 25.0 が、Winter '13 リリースには API バージョン 26.0 が含まれ
ていました。
Open CTIのバージョンは、各リリースのAPIバージョンと一致します。そのため、APIの現在のバージョンが 26.0
の場合、Open CTI もバージョン 26.0 が使用されます。
プラットフォームのリリースにわたって、各 Open CTI バージョンのサポートを維持しています。指定した Open
CTI バージョンで機能するように作成されたアプリケーションが、その後のプラットフォームのリリースでも
同じバージョンの Open CTI で継続して機能するという点では、Open CTI には後方互換性があります。
Salesforceでは、あるバージョンのOpen CTIに対応して作成されたアプリケーションがその後のOpen CTIバージョ
ンで機能することは保証されません。Open CTI の拡張は継続して行われているため、多くの場合、メソッド署
名およびデータ表示の変更が必要になります。ただし、アプリケーションを新しい Open CTI バージョンに移行
するために必要な変更が最小限ですむように、Open CTI のバージョン間の一貫性を保つように努めています。
たとえば、Summer '12 リリースに付属する Open CTI バージョン 25.0 を使用して作成されたアプリケーションは、
Winter '13 リリースの Open CTI バージョン 25.0 およびそれ以降のリリースでも継続して機能します。ただし、同
じアプリケーションが Open CTI バージョン 26.0 で機能するには、変更が必要になる可能性があります。
API サポート
Salesforceでは、最初のリリース日から最低 3 年Open CTIバージョンをサポートします。Open CTIの品質とパフォー
マンスを改善するために、リリースから 3 年を超えるバージョンはサポートを停止する可能性があります。
Open CTI バージョンのサポートが停止される予定がある場合、使用終了の通知が、バージョンのサポートが終
了する最低 1 年前には送付されます。Salesforce は、使用できなくなる Open CTI バージョンを使用しているお客
様に直接通知します。
その他のリソース
このガイドの他にも、以下のように、Open CTI の使用方法を学習するためのリソースが用意されています。
• オンラインヘルプ: 「コールセンターの概要」および「Salesforce コンソール」を参照してください。
• 開発者 Web サイト: https://developer.salesforce.com/gettingstarted
3
Open CTI の導入
Open CTI 表記規則
• Firefox の Firebug 拡張機能: Firebug for Firefox
メモ: Salesforce Education Services では、開発者が Force.com プラットフォームで構築されるアプリケーション
を設計、作成、インテグレーション、および拡張できるトレーニングコースが設けられています。詳細
は、http://www.salesforce.com/training を参照してください。
Open CTI 表記規則
Open CTI のガイドでは、次の表記規則を使用します。
規則
説明
Courier font
構文の記述では、等幅フォントは、角かっこを除いて表示されたとおりに入
力する必要のある項目を示します。次に例を示します。
Public class HelloWorld
斜体
構文の記述では、斜体は変数を示します。実際の値を入力してください。次
の例では、3 つの値を入力する必要があります。datatype variable_name
[ = value];
構文で太字かつ斜体のテキストは、クラス名や変数の値など、ユーザが指定
する必要があるコード要素を表します。
public static class YourClassHere { ... }
Bold Courier font
コードサンプルと構文の記述では、太字の Courier フォントはコードまたは
構文の部分を強調します。
<>
構文の記述では、不等号 (< >) は表示されたとおりに入力します。
<apex:pageBlockTable value="{!account.Contacts}" var="contact">
<apex:column value="{!contact.Name}"/>
<apex:column value="{!contact.MailingCity}"/>
<apex:column value="{!contact.Phone}"/>
</apex:pageBlockTable>
{}
構文の説明では、中括弧 ({ }) は表示されたとおりに入力します。
<apex:page>
Hello {!$User.FirstName}!
</apex:page>
[]
構文の記述では、角括弧で囲まれるものはすべて省略可能です。次の例で
は、 value の指定は省略可能です。
data_type variable_name [ = value];
4
Open CTI の導入
Open CTI を使用した サンプル HTML ページ
規則
説明
|
構文の記述では、パイプ記号は「または」を意味します。次のいずれか (す
べてではない) を実行できます。次の例では、2 つの方法のいずれかを使用
して未入力のセットを作成するか、次のようにセットを入力することができ
ます。
Set<data_type> set_name
[= new Set<data_type>();] |
[= new Set<data_type{value [, value2. . .] };] |
;
Open CTI を使用した サンプル HTML ページ
この例では、Open CTI を使用して CTI 機能を Salesforce ユーザインターフェースに追加する方法を示します。
Salesforce 組織にコールセンター定義ファイルをすでにインポートしたことを前提としています。
1. HTML ページを作成します。
2. 次のサンプルコードを切り取って HTML ページに貼り付けます。
このコードは、Open CTI の各種関数を示しています。
<html>
<head>
<!-- Imports Open CTI JavaScript library. It should point to a valid Salesforce
domain. -->
<script src="https://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
// Callback of API method: isInConsole
var isInConsoleCallback = function (response) {
// Returns true if method is executed in Salesforce console, false
otherwise.
if (response.result) {
alert('SoftPhone is in Salesforce console.');
} else {
alert('SoftPhone is not in Salesforce console.');
}
};
// Invokes API method: isInConsole
function isInConsole() {
sforce.interaction.isInConsole(isInConsoleCallback);
}
// Callback of API method: getCallCenterSettings
var getCallCenterSettingsCallback = function (response) {
// Result returns call center settings as a JSON string.
if (response.result) {
alert(response.result);
} else {
alert('Error retrieving call center settings ' +
response.error);
}
5
Open CTI の導入
Open CTI を使用した サンプル HTML ページ
};
// Invokes API method: getCallCenterSettings
function getCallCenterSettings() {
sforce.interaction.cti.getCallCenterSettings(getCallCenterSettingsCallback);
}
// Callback of API method: setSoftphoneHeight
var setSoftphoneHeightCallback = function (response) {
// Returns true if SoftPhone height was set successfully, false
otherwise.
if (response.result) {
alert('Setting SoftPhone height to 300px was successful.');
} else {
alert('Setting softphone height failed.');
}
};
// Invokes setSoftphoneHeight API method.
function setSoftphoneHeight() {
sforce.interaction.cti.setSoftphoneHeight(300,
setSoftphoneHeightCallback);
}
// Callback of API method: getPageInfo
var getPageInfoCallback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert('Error occured while trying to get page info: ' +
response.error);
}
}
// Invokes API method getPageInfo
function getPageInfo() {
sforce.interaction.getPageInfo(getPageInfoCallback);
}
</script>
</head>
<body>
<button onclick="isInConsole();">isInConsole</button></br>
<button onclick="getCallCenterSettings();">getCallCenterSettings</button></br>
<button onclick="setSoftphoneHeight();">setSoftphoneHeight(300)</button></br>
<button onclick="getPageInfo();">getPageInfo</button>
</body>
</html>
上記の HTML ページを作成して URL をコールセンター定義ファイルに追加した後に、ソフトフォンが Salesforce
の左側または Salesforce コンソールにカスタムコンソールコンポーネントとして表示されます。
Salesforce でのサンプル HTML ページの出力
6
Open CTI の導入
Open CTI を使用した サンプル HTML ページ
Salesforce コンソールでのサンプル HTML ページの出力
7
第2章
コールセンター定義ファイル
コールセンター定義ファイルは、特定のソフトフォン向けの、Salesforceでコールセンターの定義に使用される
一連の項目と値を指定します。Salesforce では、Salesforce CRM Call Center と複数の CTI システム業者とのインテグ
レーションをサポートするためにコールセンター定義ファイルを使用します。
Salesforce CRM Call Center のコールセンターには、ソフトフォンで特に動作するコールセンター定義ファイルが必
要です。Open CTI でカスタムソフトフォンを開発する場合は、それをサポートするコールセンター定義ファイ
ルを記述する必要があります。特定のソフトフォンに対するコールセンターの最初のインスタンスは、Salesforce
にアダプタのコールセンター定義ファイルをインポートすることで定義する必要があります。その後のコール
センターは、最初のインポートで作成された元のコールセンターをコピーすることで作成できます。
組織でソフトフォンを変更したり、新規ソフトフォンを開発したりする場合は、元のソフトフォンのコールセ
ンター定義ファイルをカスタマイズして、追加のコールセンターに必要な情報を含めるようにする必要があり
ます。たとえば、バックアップサーバをサポートするシステムに対してソフトフォンを開発している場合、
コールセンター定義ファイルにはそのバックアップサーバの IP アドレスとポート番号を含める必要がありま
す。バックアップサーバを使用しないシステムのソフトフォンに関連付けられているコールセンター定義ファ
イルには、これらの項目は必要ありません。
テキストエディタまたは XML エディタを使用して、次のトピックで示すガイドラインに従ってコールセンター
定義ファイルを定義します。
メモ: Salesforce CRM Call Center の設定や、コールセンター定義ファイルのインポートおよびコピーについて
の詳細は、Salesforce オンラインヘルプの「Salesforce CRM Call Center の設定」と「コールセンターの作成」を
参照してください。
コールセンター定義ファイルの XML 形式
コールセンター定義ファイルは、callCenter、section、item という 3 つの XML 要素で構成されます。次
に、各要素のプロパティと属性ついて詳しく説明します。
callCenter
この要素は、1 つのコールセンターの電話システムの定義を表します。すべてのコールセンター定義ファイ
ルには、少なくとも 1 つの <callCenter> 要素を含める必要があります。<callCenter> 要素は、1 つ以
上の <section> 要素で構成されます。
section
この要素は、サーバ情報や発信番号など、関連するデータ項目のグルーピングを表します。Salesforceでコー
ルセンターを編集すると、割り当てられたセクションごとに項目が整理されます。<section> 要素は、1
つの <callCenter> 要素に属し、1 つ以上の <item> 要素で構成されます。
属性:
8
コールセンター定義ファイル
コールセンター定義ファイルの XML 形式
名前
型
必須項目
説明
sortOrder
正の整数
必須
Salesforce でコールセンターを編集するときにセクショ
ンが表示される順序。たとえば、sortOrder="1" と
指定されたセクションは、sortOrder="2" と指定さ
れたセクションの直前に表示されます。
sortOrder の値は、負でない整数である必要があり、
1 つのコールセンター定義内で数値をスキップするこ
とはできません。たとえば、1 つのコールセンター定
義ファイルに 3 つの <section> 要素がある場合、1 つ
の <section> 要素は sortOrder="0"、1 つの
<section> 要素は sortOrder="1"、1 つの要素は
<section> 要素は sortOrder="2" を持つ必要があ
ります。
name
String
必須
Salesforce データベースで定義される、セクションの内
部名。この値を使用して、カスタムアダプタまたはソ
フトフォンコードの作成時にセクションを参照できま
す。
名前には、空白や他の句読点を含まない英数字のみを
使用する必要があります。それぞれの名前は 40 文字以
内に制限されています。
req で始まる名前は、必須の Salesforce セクションのみ
のために予約されています (Salesforce ヘルプの 「コー
ルセンターの必須要素と必須属性」を参照)。name 属
性に使用できない他の予約語として、label、
sortOrder、internalNameLabel、
displayNameLabel があります。
label
String
省略可能
Salesforce で表示するときのセクション名。表示ラベル
には、UTF-8 文字で構成された任意の文字列を使用でき
ます。それぞれの名前は 1000 文字以内に制限されてい
ます。
item
この要素は、プライマリサーバの IP アドレスや国際電話の発信番号など、1 つのコールセンター定義の 1 つ
の項目を表します。Salesforce でコールセンターを編集すると、各 <item> 要素は、それが属するセクショ
ンの下に表示されます。1 つの <item> 要素に、複数の <section> 要素を指定できます。
属性:
名前
型
必須項目
説明
sortOrder
正の整数
必須
Salesforce でコールセンターを編集するときに項目が表
示される順序。たとえば、sortOrder="1" と指定さ
9
コールセンター定義ファイル
名前
コールセンターの必須要素と必須属性
型
必須項目
説明
れた項目は、sortOrder="2" と指定された項目の直
前に表示されます。
sortOrder の値は、負でない整数である必要があり、
1 つのコールセンター定義内で数値をスキップするこ
とはできません。たとえば、1 つのコールセンター定
義ファイルに 3 つの <item> 要素がある場合、1 つの
<item> 要素は sortOrder="0"、1 つの <item> 要素
は sortOrder="1"、1 つの要素は <item> 要素は
sortOrder="2" を持つ必要があります。
name
String
必須
Salesforce データベースで定義される、項目の内部名。
この値を使用して、カスタムアダプタまたはソフト
フォンコードの作成時に項目を参照できます。
名前には、空白や他の句読点を含まない英数字のみを
使用する必要があります。それぞれの名前は 40 文字以
内に制限されています。
req で始まる名前は、必須の Salesforce セクションのみ
のために予約されています (Salesforce ヘルプの 「コー
ルセンターの必須要素と必須属性」を参照)。name 属
性に使用できない他の予約語として、label、
sortOrder、internalNameLabel、
displayNameLabel があります。
label
String
省略可能
Salesforce で表示するときの項目名。表示ラベルには、
UTF-8 文字で構成された任意の文字列を使用できます。
それぞれの名前は 1,000 文字以内に制限されています。
コールセンターの必須要素と必須属性
すべてのコール定義ファイルには、次の名前の <item> 要素を含む <section> が 1 つ必要です。
<item> 名
説明
reqInternalName
データベースでコールセンターを識別する一意の識別子を表します。sortOrder
値は 0 でなければならず、この値をコールセンター定義で指定する必要がありま
す。reqInternalName の値には、空白や他の句読点を含まない 40 文字以内の英
数字のみを使用できます。英字で始まり、組織で定義された他のすべてのコール
センターの reqInternalName で一意である必要があります。
reqDisplayName
Salesforce に表示されるコールセンターの名前を表します。sortOrder の値は 1 で
ある必要があります。reqDisplayName の値は、最大長 1,000 文字の UTF-8 文字で
す。
10
コールセンター定義ファイル
コールセンターの省略可能な要素と属性
<item> 名
説明
reqAdapterUrl
CTI アダプタまたはソフトフォンをホストする場所を表します。たとえば、
http://localhost:11000 などです。: /apex/softphone などの相対 URL は、
Visualforce ページで有効です。また、Force.com Canvas アプリケーションを Open CTI に
追加すると、そのアプリケーションを reqAdapterUrl より優先させることがで
きます (指定されている場合)。
reqUseApi
コールセンターで Open CTI を使用しているか (true)、否か (false) を表します。
reqSoftphoneHeight
Salesforce に表示されるソフトフォンの高さ (ピクセル単位) を表します。
reqSoftphoneWidth
Salesforce に表示されるソフトフォンの幅 (ピクセル単位) を表します。
reqCanvasNamespace
コールセンターに追加される Force.com Canvas アプリケーションに関連付けられて
いる名前空間を表します。キャンバスアプリケーションを Open CTI に追加する場
合は、必須です。
reqCanvasApiName
コールセンターに追加される Force.com Canvas アプリケーションに関連付けられて
いる API 名を表します。キャンバスアプリケーションを Open CTI に追加する場合
は、必須です。
必要に応じて、このセクションに追加の <item> 要素を指定できます。
コールセンターの省略可能な要素と属性
コール定義ファイルの必須要素に加え、省略可能な要素を追加してソフトフォンを設定できます。
<item> 名
説明
reqStandbyUrl
セカンダリソフトフォンをホストする場所を表します。スタンバイソ
フトフォンは、プライマリソフトフォンのタイムアウト期間が経過し、
必要なタイムアウト期間内に notifyInitializationComplete() メ
ソッドがコールされていない場合に使用されます。スタンバイ URL を指
定する場合は、reqTimeout 項目も指定する必要があります。
reqTimeout
スタンバイ URL を使用してソフトフォンをホストするための経過時間
(ミリ秒単位) を表します。タイムアウト期間が経過するまでは、ソフト
フォンが初期化中であることを示す読み込み中アイコンがソフトフォ
ンに表示されます。必要なタイムアウトを指定する場合は、
reqStandbyUrl 項目も指定する必要があります。
reqSoftphoneWidth
Salesforce に表示されるソフトフォンの幅 (ピクセル単位) を表します。
11
コールセンター定義ファイル
<item> 要素の値の指定
<item> 要素の値の指定
値をコールセンター定義ファイルに必ず指定する必要がある reqInternalName <item> を除き、<item> の
値は、コールセンター定義ファイルで指定することも、定義ファイルのインポート後にSalesforceで指定するこ
ともできます。
コールセンター定義ファイルの <item> 要素に値を指定するには、<item> の開始タグおよび終了タグの間に
値を配置します。たとえば、次のように使用します。
<item sortOrder="0" name="reqInternalName" label="Call Center Internal
Label">MyCallCenter</item>
reqInternalName <item> の値を MyCallCenter に設定します。reqInternalName の値以外の <item>
の値は、コールセンター定義がインポートされた後に Salesforce で編集できます。
コールセンター定義ファイルのサンプル
次の XML コードは、コールセンター定義ファイルのサンプルを構成します。
<!-All sections and items whose name value begins with "req" are
required in a valid call center definition file. The sortOrder
and label attributes can be changed for all required sections
and items except reqGeneralInfo, reqInternalName, and
reqDisplayName, in which only the label attribute can be altered.
Note that the value for the reqInternalName item is limited to
40 alphanumeric characters and must start with an alphabetic
character. reqInternalName must be unique for all call centers
that you define.
-->
<callCenter>
<section sortOrder="0" name="reqGeneralInfo" label="General Information">
<item sortOrder="0" name="reqInternalName" label="InternalNameAAA">DemoAdapter</item>
<item sortOrder="1" name="reqDisplayName" label="Display Name">Demo Call Center
Adapter</item>
<item sortOrder="2" name="reqAdapterUrl" label="CTI Adapter
URL">https://c.force.com/softphone</item>
<item sortOrder="3" name="reqUseApi" label="Use CTI API">true</item>
<item sortOrder="4" name="reqSoftphoneHeight" label="Softphone Height">300</item>
<item sortOrder="5" name="reqSoftphoneWidth" label="Softphone Width">500</item>
<item sortOrder="6" name="reqCanvasNamespace" label="Canvas Namespace">mm</item>
<item sortOrder="7" name="reqCanvasApiName" label="Canvas API Name">Hello_World</item>
</section>
<section sortOrder="1" name="reqDialingOptions" label="Dialing Options">
<item sortOrder="0" name="reqOutsidePrefix" label="Outside Prefix">9</item>
<item sortOrder="1" name="reqLongDistPrefix" label="Long Distance Prefix">1</item>
<item sortOrder="2" name="reqInternationalPrefix" label="International Prefix">01</item>
12
コールセンター定義ファイル
コールセンター定義ファイルのサンプル
</section>
</callCenter>
13
第3章
Open CTI の使用
Open CTI を使用して Salesforce で次の操作を実行します。
• ソフトフォンの高さまたは幅を設定する
• クリック-to-ダイヤルを有効化または無効化する
• コールセンター定義ファイルの設定を返す
• ユーザが Salesforce コンソールを表示しているかどうかを判別する
• Salesforce コンソールでソフトフォンを表示または非表示にする
• ページに関する情報を返す
• Salesforce で公開されている Apex クラスから Apex メソッドを実行する
• Salesforce のオブジェクトを保存または更新する
• Salesforce でキーワードを検索し、ソフトフォンレイアウトの定義に従って一致するレコードを画面ポップ
する
Open CTI への接続
Open CTI を使用する JavaScript コードの冒頭部分では、ツールキットを JavaScript コードで使用できるようにする
必要があります。このための構文は、JavaScript を Visualforce ページとサードパーティドメインのどちらに埋め
込んでいるかによって異なります。
• Visualforce ページ、またはカスタム onclick JavaScript ボタン以外のソースの場合、Open CTI ファイルを参照
する <script> タグを指定します。
<apex:page>
<script src="/support/api/34.0/interaction.js" type="text/javascript"></script>
...
</apex:page>
Visualforce の場合、integration.js は相対パスに追加すれば十分であり、この方法をお勧めします。
• サードパーティドメインの場合:
<script src="https://c.na1.visual.force.com/support/api/34.0/interaction.js"
type="text/javascript"></script>
サードパーティドメインの場合、ツールキットを使用するには interaction.js への絶対 URL を指定する
必要があります。ツールキットライブラリにアクセスできるデフォルトのインスタンスは、
https://c.na1.visual.force.com/support/api/34.0/interaction.js です。組織のインスタン
スを判別できない場合は、デフォルトのインスタンスを使用することをお勧めします。
Open CTI のバージョンは、URL に含まれています。
14
Open CTI の使用
Open CTI での非同期コール
Open CTI での非同期コール
Open CTI を使用すると、非同期コールを発行できます。非同期コールにより、クライアント側のプロセスは、
サーバからのコールバックを待機せずに処理を続行できます。非同期コールを発行するには、API コールに、
コールバック関数と呼ばれる追加のパラメータを設定する必要があります。結果の準備ができると、サーバは
結果を指定してコールバックメソッドを呼び出します。
非同期の構文:
method('arg1','arg2', ..., callback_method);
次に例を示します。
//Set SoftPhone height
sforce.interaction.cti.setSoftphoneHeight(300, callback);
メモ: コールの結果は、実行コンテキストによって異なります。たとえば、標準の Salesforce アプリケー
ションで setSoftphoneWidth() をコールしても影響はありませんが、Salesforce コンソールで
setSoftphoneWidth() をコールするとソフトフォンの幅がサイズ変更されます。
Force.com Canvas の使用
署名付き要求や OAuth 2.0 プロトコルなどの認証方式を必要とする外部アプリケーションに Open CTI を統合する
には、Force.com Canvas を使用することをお勧めします。
Force.com Canvas と Open CTI は似ています。これらはツールと JavaScript API のセットで、開発者がサードパーティ
システムを Salesforce に追加するために使用できます。ただし、Force.com Canvas の利点の 1 つとして、認証方式
を選択できるという点があります。詳細は、『Force.com Canvas 開発者ガイド』を参照してください。
メモ: キャンバスアプリケーションを Salesforce コンソールに表示するには、コンソールにカスタムコン
ソールコンポーネントとしてそれを追加する必要があります。Salesforce ヘルプの 「カスタムコンソール
コンポーネントの追加」を参照してください。
キャンバスアプリケーションの開発時に Open CTI の機能を含めるには、次の操作を実行します。
1. index.jsp に Open CTI API を含めます。
2. Sfdc.canvas.client.signedrequest() をコールし、コンソールインテグレーションツールキット API
に必要な署名付き要求を保存します。たとえば、Force.com Canvas の認証方式が署名付き要求の場合は、次
を実行します。
Sfdc.canvas.client.signedrequest('<%=signedRequest%>')
Force.com Canvas の認証方式が OAuth の場合は、『Force.com Canvas 開発者ガイド』の「キャンバスアプリケー
ションでのコンテキストの取得」に記載されているように、コンテキストの取得に使用されるコールバッ
ク関数で次を実行します。
Sfdc.canvas.client.signedrequest(msg)
Open CTI およびキャンバスアプリケーションを使用する場合は、次の点を考慮してください。
15
Open CTI の使用
ベストプラクティス
• Open CTI API スクリプトは署名付き要求によって異なるため、Sfdc.canvas.client.signedrequest() へ
のコールの実行後に追加する必要があります。スクリプトを動的に読み込むことをお勧めします。
• キャンバスのサイドバーコンポーネントに関連付けられているレコードのエンティティ ID を取得するに
は、次を実行します。
// Get signedRequest
var signedRequest = Sfdc.canvas.client.signedrequest();
var parsedRequest = JSON.parse(signedRequest);
// get the entity Id that is associated with this canvas sidebar component.
var entityId = parsedRequest.context.environment.parameters.entityId;
• OAuth の entityId を取得するには、次を実行します。
var entityId = msg.payload.environment.parameters.entityId;
msg.payload の取得方法の例については、『Force.com Canvas 開発者ガイド』の「キャンバスアプリケーショ
ンでのコンテキストの取得」を参照してください。
ベストプラクティス
• Open CTI に含まれるメソッドの多くは非同期で、コールバックメソッドを使用して結果を返すため、各メ
ソッドのドキュメントを参照してそれぞれの応答の情報を理解することをお勧めします。
• Open CTI で生成されるエラーは通常、JavaScript 処理を停止しない方法で発行されます。そのため、コードを
デバッグしやすいように、Firebug for Firefox のようなツールを使用して JavaScript コンソールを監視すること
をお勧めします。
• Visualforce を使用して Salesforce コンソールのサイドバーをカスタマイズ、拡張、または統合する方法につい
ての詳細は、Salesforce オンラインヘルプの「カスタムコンソールコンポーネントの概要」を参照してくだ
さい。
16
第4章
Salesforce アプリケーション操作用のメ
ソッド
Open CTI を使用すると、CTI システムから Salesforce アプリケーションを操作できます。
次のメソッドを使用して、CTI システムと Salesforce 間、または [ケースフィード] ページの要素間での操作を設
定できます。
CTI メソッド
メソッド
説明
getPageInfo()
現在のページに関する情報を JSON 文字列として返します。
isInConsole()
ソフトフォンが Salesforce コンソールにあるかどうかを示します。詳細
は、Salesforce オンラインヘルプの「Salesforce コンソール」を参照して
ください。
isVisible()
ソフトフォンが表示される場合は true、非表示の場合は false を返
します。
notifyInitializationComplete() Salesforce に、ソフトフォンの初期化が完了したことと、Salesforce がス
タンバイ URL に切り替えないようにすることを通知します。ソフトフォ
ンの初期化中は、[ソフトフォン] 領域に読み込み中アイコンが表示さ
れます。
onFocus()
ブラウザのフォーカスが変更されるとコールされる関数を登録します。
Salesforce コンソールでは、主タブまたはナビゲーションタブでユーザ
が移動すると、ブラウザのフォーカスが変更されます。
refreshPage()
ページ更新が呼び出された場合は true、それ以外の場合は false を
返します。このメソッドが Salesforce コンソール内でコールされると、
現在の有効なタブが更新されます。
refreshRelatedList()
指定された listName を持つ関連リストが更新された場合は true、
それ以外の場合は false を返します。このメソッドが Salesforce コン
ソール内でコールされると、現在フォーカスのあるビューで指定のリ
スト名を持つ関連リストのみが更新されます。
runApex()
Salesforce で公開された Apex クラスから Apex メソッドを実行します。
saveLog()
オブジェクトを Salesforce で保存または更新します。
screenPop()
対象 URL (相対である必要がある) にポップします。
searchAndGetScreenPopUrl()
特定の文字列に対してソフトフォンレイアウトで指定されたオブジェ
クトを検索します。検索結果と、ポップ画面への相対 URL を返します。
このメソッドは、実際の画面ポップを実行しません。このメソッドは、
ソフトフォンレイアウトで定義された画面ポップ設定を優先します。
17
Salesforce アプリケーション操作用のメソッド
getPageInfo()
CTI メソッド
詳細は、Salesforce オンラインヘルプの「カスタムソフトフォンレイア
ウトの設計」を参照してください。
searchAndScreenPop()
特定の文字列に対してソフトフォンレイアウトで指定されたオブジェ
クトを検索します。検索結果を返し、一致するレコードが画面にポッ
プされます。このメソッドは、ソフトフォンレイアウトで定義された
画面ポップ設定を優先します。
setVisible()
Salesforce コンソールで、ソフトフォンを表示するか非表示にします。
詳細は、Salesforce オンラインヘルプの「Salesforce コンソール」を参照
してください。
ケースフィードメソッド
onObjectUpdate()
ケース項目、ケースフィード、またはケース関連のリストデータが
[ケースフィード] ページで変更されるとコールされる関数を登録しま
す。
refreshObject()
ケース項目、ケースフィード、またはケース関連のリストデータが変
更されたことを [ケースフィード] ページに通知し、これらをページで
強制的に更新します。
getPageInfo()
使用方法
現在のページに関する情報を JSON 文字列として返します。
構文
sforce.interaction.getPageInfo(callback:function);
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
18
Salesforce アプリケーション操作用のメソッド
getPageInfo()
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
};
function getPageInfo() {
//Invokes API method
sforce.interaction.getPageInfo(callback);
}
</script>
</head>
<body>
<button onclick="getPageInfo();">getPageInfo</button>
</body>
</html>
応答
名前
型
説明
result
string
現在のページの URL を JSON 文字列として返します。該当するオブ
ジェクト ID、オブジェクト名、オブジェクト種別、および API バー
ジョン 33.0 以降の場合はオブジェクトタブ名が含まれます。次に例
を示します。
{"url":"http://na1.salesforce.com/001x0000003DGQR",
"objectId":"001x0000003DGQR","objectName":"Acme",
"object":"Account","displayName":"Company"}
API バージョン 31.0 以降では、個人取引先オブジェクトで API メソッ
ドを呼び出すと次の追加情報を返します。
• AccountId または ContactId、関連する取引先または取引先責任者の
ID
• PersonAccount、オブジェクトが個人取引先の場合は true、それ
以外の場合は false
次に例を示します。
{"url":"http://na1.salesforce.com/001x0000003DGQR",
"objectId":"001x0000003DGQR","objectName":"Acme Person
Account",
"object":"Account", "contactId":"003D000000QOMqg",
"personAccount":true}
19
Salesforce アプリケーション操作用のメソッド
isInConsole()
名前
型
説明
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
isInConsole()
使用方法
ソフトフォンがSalesforce コンソールにあるかどうかを示します。詳細は、Salesforceオンラインヘルプの「Salesforce
コンソール」を参照してください。
メモ: このメソッドはマルチモニターコンポーネントが有効になっている Salesforce コンソール で使用さ
れる場合、ポップアウトしたソフトフォンコンポーネントがコンソール内と同様に示されます。詳細は、
オンラインヘルプの「Salesforce コンソールのマルチモニターコンポーネントの設定」を参照してくださ
い。
構文
sforce.interaction.isInConsole(callback:function)
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('User is in console.');
}
else {
alert('User is not in console.');
}
};
</script>
</head>
<body>
20
Salesforce アプリケーション操作用のメソッド
isVisible()
<button onclick="sforce.interaction.isInConsole(callback);">isInConsole</button>
</body>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
boolean
ソフトフォンがSalesforce コンソールにある場合は true、ソフトフォ
ンが Salesforce コンソール にない場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
isVisible()
使用方法
ソフトフォンが表示される場合は true、非表示の場合は false を返します。
構文
sforce.interaction.isVisible(callback:function)
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('SoftPhone is visible');
} else {
21
Salesforce アプリケーション操作用のメソッド
notifyInitializationComplete()
alert('SoftPhone is not visible');
}
};
function isVisible() {
sforce.interaction.isVisible(callback);
}
</script>
</head>
<body>
<button onclick="isVisible();">isVisible</button>
</body>
</html>
応答
名前
型
説明
result
boolean
ソフトフォンが表示される場合は true、非表示の場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
notifyInitializationComplete()
使用方法
Salesforce に、ソフトフォンの初期化が完了したことと、Salesforce がスタンバイ URL に切り替えないようにする
ことを通知します。ソフトフォンの初期化中は、[ソフトフォン] 領域に読み込み中アイコンが表示されます。
スタンバイ URL を使用するには、コールセンターの定義ファイルに指定する必要があります。詳細は、「コー
ルセンターの省略可能な要素と属性」 (ページ 11)を参照してください。
構文
sforce.interaction.cti.notifyInitializationComplete()
引数
なし。
サンプルコード
<html>
<head>
<script
22
Salesforce アプリケーション操作用のメソッド
onFocus()
src="https://na1-blitz04.soma.salesforce.com/support/api/29.0/interaction.js"></script>
<script type="text/javascript">
// Invokes API method
sforce.interaction.cti.notifyInitializationComplete();
</script>
</head>
<body>
The interaction framework has been notified that the cti initialization is complete.
</body>
</html>
応答
なし。
onFocus()
使用方法
ブラウザのフォーカスが変更されるとコールされる関数を登録します。Salesforce コンソールでは、主タブまた
はナビゲーションタブでユーザが移動すると、ブラウザのフォーカスが変更されます。詳細は、Salesforceオン
ラインヘルプの「Salesforce コンソール」を参照してください。
構文
sforce.interaction.onFocus( listener:function );
引数
名前
型
説明
listener
function
ブラウザのフォーカスが変更されたときにコールされる JavaScript メ
ソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
}
23
Salesforce アプリケーション操作用のメソッド
onFocus()
};
//Invokes API method
sforce.interaction.onFocus(callback);
</script>
</head>
</body>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
string
フォーカスされているページの URL を JSON 文字列として返します。
該当するオブジェクト ID、オブジェクト名、オブジェクト種別、お
よび API バージョン 33.0 以降の場合はオブジェクトタブ名が含まれ
ます。以下に例を示します。
{"url":"http://salesforce.com/001x0000003DGQR",
"objectId":"001x0000003DGQR","objectName":"Acme",
"object":"Account","displayName":"Company"}
ページがオブジェクトにフォーカスしていない場合、オブジェクト
ID、オブジェクト名、およびオブジェクトは空になります。
API バージョン 31.0 以降では、個人取引先オブジェクトで API メソッ
ドを呼び出すと次の追加情報を返します。
• AccountId または ContactId、関連する取引先または取引先責任者の
ID
• PersonAccount、オブジェクトが個人取引先の場合は true、それ
以外の場合は false
次に例を示します。
{"url":"http://na1.salesforce.com/001x0000003DGQR",
"objectId":"001x0000003DGQR","objectName":"Acme Person
Account",
"object":"Account", "contactId":"003D000000QOMqg",
"personAccount":true}
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
24
Salesforce アプリケーション操作用のメソッド
refreshPage()
refreshPage()
使用方法
ページ更新が呼び出された場合は true、それ以外の場合は false を返します。このメソッドが Salesforce コ
ンソール内でコールされると、現在の有効なタブが更新されます。このメソッドは、API バージョン 28.0 以降
でのみ使用できます。
構文
sforce.interaction.refreshPage(callback:function);
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/28.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('Page refresh has been invoked.');
} else {
alert('Page refresh has not been invoked.');
}
};
function refreshPage() {
sforce.interaction.refreshPage(callback);
}
</script>
</head>
<body>
<button onclick="refreshPage();">refreshPage</button>
</body>
</html>
25
Salesforce アプリケーション操作用のメソッド
refreshRelatedList()
応答
名前
型
説明
result
boolean
ページ更新が呼び出された場合は true、それ以外の場合は false
を返します。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
refreshRelatedList()
使用方法
指定された listName を持つ関連リストが更新された場合は true、それ以外の場合は false を返します。
このメソッドがSalesforce コンソール内でコールされると、現在フォーカスのあるビューで指定のリスト名を持
つ関連リストのみが更新されます。このメソッドは、API バージョン 28.0 以降でのみ使用できます。
構文
sforce.interaction.refreshRelatedList(listName:string, callback:function)
引数
名前
型
説明
listName
string
更新する関連リストの名前。たとえば、取引先責任者関連リストの
取引先責任者や活動予定関連リストの活動。
カスタム参照項目から作成されたカスタム関連リストを更新するに
は、listName は、カスタム参照項目の ID を指定する必要がありま
す。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/28.0/interaction.js"></script>
<script type="text/javascript">
function checkRefreshResult(result) {
if (result.result) {
26
Salesforce アプリケーション操作用のメソッド
refreshRelatedList()
alert('The related list is refreshed!');
} else {
alert('Cannot refresh the related list with the given listName! Make
sure the listName is correct and the related list is on the page.');
}
}
function refreshActivityRelatedList() {
sforce.interaction.refreshRelatedList('Activity', checkRefreshResult);
}
function refreshHistoryRelatedList() {
sforce.interaction.refreshRelatedList('History', checkRefreshResult);
}
function saveAndRefresh() {
sforce.interaction.saveLog('Task',
'Subject=ImportantTask&WhatId=[15-character ID of an account to which you want to attach
the task]', function(result) {
if (result.result) {
refreshActivityRelatedList();
} else {
alert('Could not save the object! Check the developer console for error
messages.');
}
});
}
</script>
</head>
<body>
<button onclick="refreshHistoryRelatedList();">Refresh History Related List</button>
<button onclick="saveAndRefresh();">Save and Refresh</button>
</body>
</html>
応答
名前
型
説明
result
boolean
指定された名前を持つ関連リストが更新された場合は true、それ
以外の場合は false を返します。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
メモ
• このメソッドは、<apex:relatedList> から作成された関連リストを更新できません。
• このメソッドは、Salesforce コンソールで上書きされた Visualforce ページから関連リストを更新できません。
27
Salesforce アプリケーション操作用のメソッド
runApex()
• Salesforce コンソール内からコールされると、このメソッドは現在フォーカスされているビューの更新対象
の関連リストの検索のみを行います。
runApex()
使用方法
Salesforce で公開された Apex クラスから Apex メソッドを実行します。詳細は、Salesforce オンラインヘルプの
「Apex コードの概要」を参照してください。
構文
sforce.interaction.runApex(apexClass:string, methodName:string, methodParams:string,
(optional) callback:function)
引数
名前
型
説明
apexClass
string
実行するメソッドの Apex クラスを指定します。
methodName
string
実行するメソッドを指定します。
methodParams
string
メソッドに渡すパラメータを指定します。文字列は、項目値のペア
を含み、有効なクエリ文字列の形式にする必要があります。たとえ
ば、name=acme&phone=(212) 555-5555 です。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
1. システム管理者が Apex クラスおよび Apex メソッドを作成します (詳細は Salesforce オンラインヘルプを参照
してください)。
global class AccountRetrieval{
webService static String getAccount(String name) {
List<Account> accounts = new List<Account>();
for (Account account : Database.query('Select Id, Name, phone from Account where Name
like\"' + name + '%\"')){
accounts.add(account);
}
String JSONString = JSON.serialize(accounts);
return JSONString;
}
}
28
Salesforce アプリケーション操作用のメソッド
runApex()
2. サードパーティのソフトフォンがコールできるように、Salesforce の Apex クラスおよび Apex メソッドを作成
した場所で [WSDL の作成] をクリックしてメソッドおよびクラスを公開します。
3. コードをソフトフォンに追加します。
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
};
function runApex() {
//Invokes API method
sforce.interaction.runApex('AccountRetrieval', 'getAccount', 'name=acme',
callback);
}
</script>
</head>
<body>
<button onclick="runApex();">runApex</button>
</body>
</html>
4. 出力が返されます。ここでは、取引先 Acme が見つかりました。
[{"attributes":{"type":"Account",
"url":"/services/data/v25.0/sobjects/Account/001x0000003DGQRAA4"},
"Id":"001x0000003DGQRAA4","Name":"Acme","Phone":"(212) 555-5555"}]
応答
名前
型
説明
result
string
指定された Apex クラスからメソッドを実行した結果を返します。
返される形式の指定はできません。形式は、実行されたメソッドの
値によって決定されます。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
29
Salesforce アプリケーション操作用のメソッド
saveLog()
saveLog()
使用方法
オブジェクトを Salesforce で保存または更新します。
構文
sforce.interaction.saveLog(object:string, saveParams:string, (optional)callback:function)
引数
名前
型
説明
object
string
保存または更新対象のオブジェクトの名前。
saveParams
string
保存または更新対象のオブジェクトの項目を指定します。
オブジェクトの ID が指定されると、レコードが更新されます。たと
えば、Id=001D000000J6qIX&Name=Acme&Phone=4154561515 で
す。オブジェクトの ID が指定されない場合、新しいレコードが作成
されます。たとえば、Name=Acme&Phone=4154561515 です。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
}
function saveLog() {
//Invokes API method
sforce.interaction.saveLog('Account','Name=NewAccountName&Phone=4155551212',
callback);
}
</script>
</head>
30
Salesforce アプリケーション操作用のメソッド
screenPop()
<button onclick="saveLog();">saveLog</button>
</html>
応答
名前
型
説明
result
boolean
オブジェクトが正常に保存または更新された場合は true、オブジェ
クトが正常に保存または更新されなかった場合は false。
id
string
新たに作成されたオブジェクトの ID。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
screenPop()
使用方法
対象 URL (相対である必要がある) にポップします。
構文
sforce.interaction.screenPop(url:string, force:boolean, (optional) callback:function)
引数
名前
型
説明
url
string
相対 URL。画面ポップの場所を指定します。
force
boolean
画面ポップを強制的に表示するには値を true に設定し、それ以外
の場合は false に設定します。この引数は、API バージョン 28.0 以
降でのみ使用できます。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/28.0/interaction.js"></script>
<script type="text/javascript">
31
Salesforce アプリケーション操作用のメソッド
searchAndGetScreenPopUrl()
var callback = function (response) {
if (response.result) {
alert('Screen pop was set successfully.');
}
else {
alert('Screen pop failed.' + result.error);
}
};
function screenPop() {
//Invokes API method
sforce.interaction.screenPop('/001x0000003DGQR', true, callback);
}
</script>
</head>
<body>
<!-- Note that '001x0000003DGQR' is an example of an object Id to screen pop. -->
<button onclick="screenPop();">screen pop to entity Id</button>
</body>
</html>
応答
名前
型
説明
result
boolean
画面ポップが正常に表示された場合は true、正常に表示されなかっ
た場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
searchAndGetScreenPopUrl()
使用方法
特定の文字列に対してソフトフォンレイアウトで指定されたオブジェクトを検索します。検索結果と、ポップ
画面への相対 URL を返します。このメソッドは、実際の画面ポップを実行しません。このメソッドは、ソフト
フォンレイアウトで定義された画面ポップ設定を優先します。詳細は、Salesforceオンラインヘルプの「カスタ
ムソフトフォンレイアウトの設計」を参照してください。このメソッドは、API バージョン 28.0 以降でのみ使
用できます。
構文
sforce.interaction.searchAndGetScreenPopUrl(searchParams:string, queryParams:string,
callType:string, callback:function)
32
Salesforce アプリケーション操作用のメソッド
searchAndGetScreenPopUrl()
引数
名前
型
説明
searchParams
string
検索対象の文字列。
queryParams
string
URL に渡すクエリパラメータを指定します。
callType
string
着信、発信、内線、または null などの通話種別を指定します。通話
種別は、ソフトフォンレイアウトでの設定ごとに、語句検索を行う
オブジェクトを決定します。詳細は、Salesforce オンラインヘルプの
「カスタムソフトフォンレイアウトの設計」を参照してください。
callType が null の場合、デフォルトで着信を検索します。callType
が内線または発信の場合、画面ポップは表示されません。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/33.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
};
function searchAndGetScreenPopUrl() {
//Invokes API method
sforce.interaction.searchAndGetScreenPopUrl('Acme',
'Key1=value1&Key2=value2', 'inbound', callback);
}
</script>
</head>
<body>
<button onclick="searchAndGetScreenPopUrl();">searchAndGetScreenPopUrl</button>
</body>
</html>
33
Salesforce アプリケーション操作用のメソッド
searchAndScreenPop()
応答
名前
型
説明
result
string
検索結果および URL に一致するオブジェクトのリストを画面ポップ
(screenPopUrl) に返します。検索は、ソフトフォンレイアウトで
指定されたオブジェクトで実行されます。検出されたオブジェクト
ごとに、オブジェクト ID、項目名、項目値、および API バージョン
33.0 以降の場合はオブジェクトタブ名が JSON 文字列として返されま
す。
次に、「Acme」を検索し、1 つの取引先オブジェクトと 3 つの商談
オブジェクトが検出された例を示します。
{"006x0000001ZcyG":{"Name":"Acme - 600
Widgets","object":"Opportunity","displayName":"Opportunity"},
"001x0000003DGQR":{"Name":"Acme","Type":"Analyst","object":"Account",
"displayName":"Company"},
"006x0000001ZcyH":{"Name":"Acme - 200
Widgets","object":"Opportunity","displayName":"Opportunity"},
"006x0000001ZcyF":{"Name":"Acme - 1,200
Widgets","object":"Opportunity","displayName":"Opportunity"},
screenPopUrl:"/search/SearchResults?searchType=2&str=Acme"}
API バージョン 31.0 以降では、個人取引先オブジェクトで API メソッ
ドを呼び出すと追加情報を返します。
{"001D000000Jn5C5":{"Name":"PersonAccount","contactId":"003D000000QQCEu",
"Type":"Analyst","object":"Account","displayName":"Account","personAccount":true},
"screenPopUrl":"/001D000000Jn5C5"}
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
searchAndScreenPop()
使用方法
特定の文字列に対してソフトフォンレイアウトで指定されたオブジェクトを検索します。検索結果を返し、一
致するレコードが画面にポップされます。このメソッドは、ソフトフォンレイアウトで定義された画面ポップ
設定を優先します。詳細は、Salesforceオンラインヘルプの「カスタムソフトフォンレイアウトの設計」を参照
してください。
構文
sforce.interaction.searchAndScreenPop(searchParams:string, queryParams:string,
callType:string, (optional) callback:function);
34
Salesforce アプリケーション操作用のメソッド
searchAndScreenPop()
引数
名前
型
説明
searchParams
string
検索対象の文字列。
queryParams
string
URL に渡すクエリパラメータを指定します。
callType
string
着信、発信、内線、または null などの通話種別を指定します。通話
種別は、ソフトフォンレイアウトでの設定ごとに、語句検索を行う
オブジェクトを決定します。詳細は、Salesforce オンラインヘルプの
「カスタムソフトフォンレイアウトの設計」を参照してください。
callType が null の場合、デフォルトで着信を検索します。callType
が内線または発信の場合、画面ポップは表示されません。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/33.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
};
function searchAndScreenPop() {
//Invokes API method
sforce.interaction.searchAndScreenPop('Acme', 'Key1=value1&Key2=value2',
'inbound', callback);
}
</script>
</head>
<body>
<button onclick="searchAndScreenPop();">searchAndScreenPop</button>
</body>
</html>
35
Salesforce アプリケーション操作用のメソッド
refreshObject()
応答
名前
型
説明
result
string
検索結果に一致するオブジェクトのリストを返します。検索は、ソ
フトフォンレイアウトで指定されたオブジェクトで実行されます。
検出されたオブジェクトごとに、オブジェクト ID、項目名、項目
値、および API バージョン 33.0 以降の場合はオブジェクトタブ名が
JSON 文字列として返されます。
次に、「Acme」を検索し、1 つの取引先オブジェクトと 3 つの商談
オブジェクトが検出された例を示します。
{"006x0000001ZcyG":{"Name":"Acme - 600
Widgets","object":"Opportunity","displayName":"Opportunity"},
"001x0000003DGQR":{"Name":"Acme","Type":"Analyst","object":"Account",
"displayName":"Company"},
"006x0000001ZcyH":{"Name":"Acme - 200
Widgets","object":"Opportunity","displayName":"Opportunity"},
"006x0000001ZcyF":{"Name":"Acme - 1,200
Widgets","object":"Opportunity","displayName":"Opportunity"},
screenPopUrl:"/search/SearchResults?searchType=2&str=Acme"}
API バージョン 31.0 以降では、個人取引先オブジェクトで API メソッ
ドを呼び出すと追加情報を返します。
{"001D000000JWAW8":{"Name":"Acme","contactId":"003D000000QNwDB",
"Type":"Analyst","object":"Account","personAccount":true}}
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
refreshObject()
使用方法
ケース項目、ケースフィード、またはケース関連のリストデータが変更されたことを[ケースフィード]ページ
に通知し、これらをページで強制的に更新します。
メモ: [ケースフィード] のカスタムパブリッシャーとして使用する Visualforce ページでこのメソッドを使用
します。
構文
sforce.interaction.entityFeed.refreshObject(
objectId:string,
refreshFields:boolean,
36
Salesforce アプリケーション操作用のメソッド
setVisible()
refreshRelatedLists:boolean,
refreshFeed:boolean,callback:function)
引数
名前
型
説明
objectId
string
ケースオブジェクトのレコード ID。
refreshFields
boolean
ケースの 1 つ以上の項目が変更されたことを示します。
refreshRelatedLists boolean
1 つ以上のケース関連リストが変更されたことを示します。
refreshFeed
boolean
ケースフィードが変更されたことを示します。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<apex:page standardController="Case">
<apex:includeScript value="/support/api/26.0/interaction.js"/>
<a href="javascript:void(0);"
onclick="sforce.interaction.entityFeed.refreshObject('{!case.id}', true, true, true,
function(response) {alert('Case was updated: ' + response.result);});">Refresh Case</a>
</apex:page>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
boolean
[ケースフィード]ページが正常に更新された場合は true、それ以外
の場合は false。
setVisible()
使用方法
Salesforce コンソールで、ソフトフォンを表示するか非表示にします。詳細は、Salesforce オンラインヘルプの
「Salesforce コンソール」を参照してください。
37
Salesforce アプリケーション操作用のメソッド
setVisible()
メモ: このメソッドが、マルチモニターコンポーネントが有効になっている Salesforce コンソール で使用
されると、エラーが返されます。詳細は、オンラインヘルプの「Salesforce コンソールのマルチモニターコ
ンポーネントの設定」を参照してください。
構文
sforce.interaction.setVisible(value:boolean, (optional) callback:function)
引数
名前
型
説明
value
boolean
ソフトフォンを表示するには値を true に設定し、ソフトフォンを
非表示にするには値を false に設定します。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
};
function setVisible(value) {
sforce.interaction.setVisible(value, callback);
}
</script>
</head>
<body>
<button onclick="setVisible(false);">hide softphone</button>
</body>
</html>
38
Salesforce アプリケーション操作用のメソッド
onObjectUpdate()
応答
名前
型
説明
result
boolean
ソフトフォンの表示または非表示が正常に行われた場合は true、
ソフトフォンの表示または非表示が正常に行われなかった場合は
false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
onObjectUpdate()
使用方法
ケース項目、ケースフィード、またはケース関連のリストデータが [ケースフィード] ページで変更されると
コールされる関数を登録します。
メモ: [ケースフィード] のカスタムパブリッシャーとして使用する Visualforce ページでこのメソッドを使用
します。
構文
sforce.interaction.entityFeed.onObjectUpdate(callback:function)
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<apex:page standardController="Case">
<apex:includeScript value="/support/api/26.0/interaction.js"/>
<script type="text/javascript">
var callback = function(response) {
alert('Case was updated. Fields = ' + response.fieldsUpdated +
' Related lists = ' + response.relatedListsUpdated + ' Feed = ' +
response.feedUpdated);
};
//Invokes API method
sforce.interaction.entityFeed.onObjectUpdate(callback);
39
Salesforce アプリケーション操作用のメソッド
onObjectUpdate()
</script>
</apex:page>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
fieldsUpdated
boolean
1 つ以上のケース項目が更新された場合は true。
relatedListsUpdated boolean
feedUpdated
boolean
1 つ以上のケース関連リストが更新されなかった場合は true。
ケースフィードが更新された場合は true。
40
第5章
コンピュータテレフォニーインテグレー
ション (CTI) のメソッド
Open CTI を使用すると、CTI システムを Salesforce に統合できます。CTI についての詳細は、Salesforce オンライン
ヘルプの「コールセンターの概要」を参照してください。
次のメソッドを使用して、CTI システムを Salesforce に統合します。
メソッド
説明
disableClickToDial()
クリック-to-ダイヤルを無効にします。
enableClickToDial()
クリック-to-ダイヤルを有効にします。
getCallCenterSettings()
コールセンター定義ファイル内のコールセンターの設定を JSON 文字列と
して返します。
getDirectoryNumbers()
コールセンターのディレクトリから電話番号のリストを返します。
getSoftphoneLayout()
ソフトフォンレイアウトを JSON 文字列として返します。ソフトフォンレ
イアウトについての詳細は、Salesforce オンラインヘルプの「カスタムソ
フトフォンレイアウトの設計」を参照してください。
onClickToDial()
有効化された電話番号をユーザがクリックするとコールされる関数を登
録します。
setSoftphoneHeight()
ソフトフォンの高さ (ピクセル単位) を設定します。
setSoftphoneWidth()
Salesforce コンソールのソフトフォンの幅 (ピクセル単位) を設定します。
詳細は、Salesforce オンラインヘルプの「Salesforce コンソール」を参照し
てください。
disableClickToDial()
使用方法
クリック-to-ダイヤルを無効にします。
構文
sforce.interaction.cti.disableClickToDial( (optional) callback:function )
41
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
disableClickToDial()
引数
名前
タイプ
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('Click to dial was disabled.');
} else {
alert('Click to dial was not disabled.');
}
};
function disableClickToDial() {
//Invokes API method
sforce.interaction.cti.disableClickToDial(callback);
}
</script>
</head>
<body>
<button onclick="disableClickToDial();">disable click to dial</button>
</body>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
boolean
クリック-to-ダイヤルが無効にされた場合は true、クリック-to-ダイ
ヤルが無効にされなかった場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
42
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
enableClickToDial()
enableClickToDial()
使用方法
クリック-to-ダイヤルを有効にします。
構文
sforce.interaction.cti.enableClickToDial( (optional) callback:function )
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('Click to dial was enabled.');
} else {
alert('Click to dial was not enabled.');
}
};
function enableClickToDial() {
//Invokes API method
sforce.interaction.cti.enableClickToDial(callback);
}
</script>
</head>
<body>
<button onclick="enableClickToDial();">enable click to dial</button>
</body>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
43
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
getCallCenterSettings()
名前
型
説明
result
boolean
クリック-to-ダイヤルが有効にされた場合は true、クリック-to-ダイ
ヤルが有効にされなかった場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
getCallCenterSettings()
使用方法
コールセンター定義ファイル内のコールセンターの設定を JSON 文字列として返します。詳細は、「コールセ
ンター定義ファイル」 (ページ 8)を参照してください。
構文
sforce.interaction.cti.getCallCenterSettings(callback:function)
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
alert(response.result);
}
//Calls getCallCenterSettings
sforce.interaction.cti.getCallCenterSettings(callback);
</script>
</head>
<body></body>
</html>
44
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
getDirectoryNumbers()
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
string
APIコールが正常に行われた場合、コールセンターの設定定義が JSON
文字列として返されます。API コールが失敗した場合、null が返され
ます。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
getDirectoryNumbers()
使用方法
コールセンターのディレクトリから電話番号のリストを返します。このメソッドは、API バージョン 31.0 以降
でのみ使用できます。
構文
sforce.interaction.cti.getDirectoryNumbers(isGlobal:boolean, callCenterName:String,
(optional) callback:function, (optional) resultSetPage:Integer, (optional)
resultSetPageSize:Integer)
引数
名前
型
説明
isGlobal
boolean
グローバルコールセンター名からディレクトリ番号を返すには値を
true に設定し、コールセンター固有のディレクトリ番号を返すに
は値を false に設定します。
callCenterName
string
ディレクトリ番号を返すコールセンター名を指定します。isGlobal
が false に設定されていて、この項目が指定されない場合、すべ
てのディレクトリ番号が返されます。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
resultSetPage
integer
返される結果のリストのページ番号を表します。この番号は 0 から
開始します。
resultSetPageSize
integer
検索する電話番号の最大数を設定します。これはデフォルトでは
5000 に設定されていて、最大数は 10000 です。hasNext が callback
45
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
名前
型
getDirectoryNumbers()
説明
で true を返す場合、この引数を resultSetPage と一緒に使用し
て、結果の次のページを取得します。たとえば、
resultSetPageSize が 5000 に設定されていて、resultSetPage
が 0 に設定されている場合、最初の 5000 件の電話番号が返されま
す。resultSetPage が 1 に設定されている場合、次の 5000 件の電
話番号が返されます。
サンプルコード – JavaScript
<html>
<head>
<script src="https://domain:port/support/api/31.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert(response.result);
} else {
alert(response.error);
}
};
var isGlobal = false; //Do not return directories from the global call center
var callCenterName = ‘My Call Center’; //Call center name of directory numbers to
return
function getDirectoryNumbers() {
sforce.interaction.cti.getDirectoryNumbers(isGlobal, callCenterName,
callback);
}
</script>
</head>
<body>
<button onclick="getDirectoryNumbers();">Get Directory Numbers</button>
</body>
</html>
応答
名前
型
説明
result
string
指定されたコールセンター名から電話番号のリストを表す JSON 文字
列を返します。各電話番号要素には、コールセンター名、電話番
号、および説明が含まれます。次に例を示します。
{ directoryNumbers:
[
{callCenterName:'Demo Call Center', name:'Sales
46
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
名前
型
getSoftphoneLayout()
説明
Cloud', phone:'415-555-1212', description:'Sales Cloud
additional number'},
{callCenterName:'Demo Call Center 2', name:'Service
Cloud', phone:'415-555-3434', description:'Service
Cloud additional number'},
],
hasNext: false
}
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
getSoftphoneLayout()
使用方法
ソフトフォンレイアウトを JSON 文字列として返します。ソフトフォンレイアウトについての詳細は、Salesforce
オンラインヘルプの「カスタムソフトフォンレイアウトの設計」を参照してください。このメソッドは、API
バージョン 27.0 以降でのみ使用できます。
構文
sforce.interaction.cti.getSoftphoneLayout(callback:function);
引数
名前
型
説明
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/27.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
alert(response.result);
}
// Calls getSoftphoneLayout
sforce.interaction.cti.getSoftphoneLayout(callback);
</script>
47
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
getSoftphoneLayout()
</head>
<body></body>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
string
API コールが正常に行われた場合、ソフトフォンレイアウト定義が
JSON 文字列として返されます。API コールが失敗した場合、null が返
されます。
返された JSON 文字列には、各通話種別を表す 3 つの要素が含まれま
す。
• "Internal"
• "Inbound"
• "Outbound"
各通話種別には 3 つのサブセクションが含まれます。
• "callRelatedFields" — 表示対象として選択された通話関連
項目の配列。使用できる値
は、"ANI"、"DNIS"、"SEGMENT"、"QUEUE" です。
• "objects" — 表示対象として選択された Salesforce オブジェクト
のセット。各オブジェクトから表示対象として選択された [項目
表示ラベル] および [項目名] (API 参照名) も含まれます。
• "screenPopSettings" — このオブジェクトに
は、"ExistingWindow" または "NewWindow" のいずれかの値
を持つ "screenPopsOpenWithin" 項目が含まれます。また、
各画面ポップの一致項
目、"NoMatch"、"SingleMatch"、"MultipleMatches" の設
定も含まれます。各一致項目には、対応する "screenPopType"
項目が格納されます。また、"screenPopData" 項目が格納され
る場合もあります。"screenPopType" に "PopToEntity" の値
が指定されている場合、"screenPopData" には対象オブジェク
トの名前が含まれます。"screenPopType" に
"PopToVisualforce" の値が指定されている場
合、"screenPopData" には対象の Visualforce ページの名前が含
まれます。"screenPopType" に "PopToSearch" の値が指定さ
れている場合、"screenPopData" 項目は存在しません。
48
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
名前
型
getSoftphoneLayout()
説明
次に、JSON 応答の例を示します。
"Internal" : {
"callRelatedFields" : [
"ANI",
"DNIS",
]
"objects" : {
"User" : [ {
"displayName" : "Name",
"apiName" : "Name"
}
]
},
"screenPopSettings" : {}
},
"Inbound" : {
"callRelatedFields" : [
"ANI",
"DNIS",
"SEGMENT",
"QUEUE"
],
"objects" : {
"Account" : [ {
"displayName" : "Account Name",
"apiName" : "Name"
}
]
},
"screenPopSettings" : {
"NoMatch" : {
"screenPopType" : "PopToEntity",
"screenPopData" : "Contact"
},
"SingleMatch" : {
"screenPopType" : "PopToVisualforce",
"screenPopData" : "Visualforce_Page_Name"
},
"MultipleMatches" : {
"screenPopType" : "PopToSearch"
}
}
},
"Outbound" : {
"callRelatedFields" : [
"DNIS"
],
"objects" : {
"Account" : [ {
49
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
名前
型
onClickToDial()
説明
"displayName" : "Account Name",
"apiName" : "Name"
}
]
},
"screenPopSettings" : {}
}
}
error
文字列型また API コールが正常に行われた場合、この変数は未定義です。API コー
は未定義
ルが失敗した場合、この変数はエラーメッセージを返します。
onClickToDial()
使用方法
有効化された電話番号をユーザがクリックするとコールされる関数を登録します。
構文
sforce.interaction.cti.onClickToDial( listener:function )
引数
名前
型
説明
listener
function
ユーザが電話番号をクリックしたときにコールされる JavaScript メ
ソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var listener = function (response) {
if (response.result) {
alert('User clicked on a phone number.' + response.result );
}
};
//Invokes API method
sforce.interaction.cti.onClickToDial(listener);
50
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
setSoftphoneHeight()
</script>
</head>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
string
クリックが開始された場所から、電話番号、オブジェクト ID、オブ
ジェクト名、および API バージョン 33.0 以降の場合はオブジェクト
タブ名を JSON 文字列として返します。以下に例を示します。
{"number":"4155551212","objectId":"001x0000003DIGj","objectName":"Account",
"displayName":"Company"}
API バージョン 33.0 以降では、個人取引先オブジェクトで API メソッ
ドを呼び出すと次の追加情報を返します。
• AccountId または ContactId、関連する取引先または取引先責任者の
ID
• PersonAccount、オブジェクトが個人取引先の場合は true、それ
以外の場合は false
次に例を示します。
{"number":"4155551212","object
Id":"001D000000JWVvP","objectName":"Howard
Jones","object":"Account",
"personAccount":true,"contactId":" 003D000000QOBPX"}
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
setSoftphoneHeight()
使用方法
ソフトフォンの高さ (ピクセル単位) を設定します。
メモ: このメソッドが、マルチモニターコンポーネントが有効になっている Salesforce コンソール で使用
される場合、マルチモニターコンポーネントのサイズ調整は許可されないためエラーが返されます。詳
細は、オンラインヘルプの「Salesforce コンソールのマルチモニターコンポーネントの設定」を参照してく
ださい。
51
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
setSoftphoneHeight()
構文
sforce.interaction.cti.setSoftphoneHeight(height:number, (optional) callback:function)
引数
名前
型
説明
height
number
ソフトフォンの高さ (ピクセル単位) 。高さは 0 以上の数値である必
要があります。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('Height was set successfully.');
}
else {
alert('Height was not set successfully.');
}
};
</script>
</head>
<body>
<button onclick="sforce.interaction.cti.setSoftphoneHeight(200, callback);">
set softphone height to 200px
</button>
</body>
</html>
応答
名前
型
説明
result
boolean
高さが正常に設定された場合は true、高さが正常に設定されなかっ
た場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
52
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
setSoftphoneWidth()
setSoftphoneWidth()
使用方法
Salesforce コンソールのソフトフォンの幅 (ピクセル単位) を設定します。詳細は、Salesforce オンラインヘルプの
「Salesforce コンソール」を参照してください。
メモ: このメソッドが、マルチモニターコンポーネントが有効になっている Salesforce コンソール で使用
される場合、マルチモニターコンポーネントのサイズ調整は許可されないためエラーが返されます。詳
細は、オンラインヘルプの「Salesforce コンソールのマルチモニターコンポーネントの設定」を参照してく
ださい。
構文
sforce.interaction.cti.setSoftphoneWidth(width:number, (optional) callback:function)
引数
名前
型
説明
width
number
ソフトフォンの幅 (ピクセル単位) 。幅は 0 以上の数値である必要が
あります。
callback
function
メソッドの完了時にコールされる JavaScript メソッド。
サンプルコード – JavaScript
<html>
<head>
<script type="text/javascript"
src="http://domain:port/support/api/25.0/interaction.js"></script>
<script type="text/javascript">
var callback = function (response) {
if (response.result) {
alert('Width was set successfully.');
}
else {
alert('Width was not set successfully.');
}
};
</script>
</head>
<body>
<button onclick="sforce.interaction.cti.setSoftphoneWidth(100, callback);">
set softphone width to 100px
</button>
53
コンピュータテレフォニーインテグレーション (CTI) の
メソッド
setSoftphoneWidth()
</body>
</html>
応答
このメソッドは非同期であるため、コールバックメソッドのオブジェクトで応答を返します。応答オブジェク
トには次の項目が含まれます。
名前
型
説明
result
boolean
幅が正常に設定された場合は true、幅が正常に設定されなかった
場合は false。
error
string
API コールが正常に行われた場合、この変数は未定義です。API コー
ルが失敗した場合、この変数はエラーメッセージを返します。
54
第6章
用語集
A |B |C |D |E |F |G |H |I |J |K |L |M |N |O |P |Q |R |S |T |U |V |W |X |Y |Z
A
管理者 (システム管理者)
アプリケーションの設定およびカスタマイズができる組織内の 1 人以上のユーザ。システム管理者プロファ
イルに割り当てられているユーザは、管理者権限があります。
アプリケーションプログラムインターフェース (API)
コンピュータシステム、ライブラリ、またはアプリケーションが、その他のコンピュータプログラムがサー
ビスを要求したりデータを交換したりできる機能を提供するインターフェースです。
非同期コール
操作に長い時間がかかるため、直ちに結果を返さないコールです。メタデータ API と Bulk API のコールは非
同期です。
B
Boolean 演算子
Boolean 演算子をレポートプロファイルで使用して、2 つの値の間の論理関係を指定できます。たとえば、2
つの値の間で AND 演算子を使用すると、両方の値を含む検索結果が生成されます。同様に、2 つの値の間
で OR 演算子を使用すると、どちらかの値を含む検索結果が生成されます。
C
CTI Adapter
Salesforceソフトフォンの外観と動作を制御する軽量ソフトウェアプログラム。このアダプタは、サードパー
ティの CTI (コンピュータテレフォニーインテグレーション) システム、Salesforce、および Salesforce CRM Call
Center ユーザとの間の仲介ソフトウェアとして動作します。Salesforce CRM Call Center 機能にアクセスするすべ
てのコンピュータにインストールする必要があります。
CTI システム
特定のコールセンターのためにコンピュータテレフォニーインテグレーション (CTI) を実装するハードウェ
アおよびソフトウェア。
カスタムリンク
カスタムリンクとは管理者によって定義された URL。これを使用して、Salesforceデータを外部 Web サイトと
バックエンドのオフィスシステムと統合します。以前は Web リンクと呼ばれていました。
55
用語集
D
データベース
情報の編成されたコレクション。Force.com プラットフォームの基底となるアーキテクチャには、データが
格納されているデータベースが含まれています。
データベーステーブル
追跡する必要のある人物、物事、またはコンセプトに関する情報のリストで、行および列で表示されます。
「オブジェクト」も参照してください。
Salesforce 開発者
Salesforce 開発者 Web サイト (developer.salesforce.com) では、サンプルコード、ツールキット、オンライン開発
者コミュニティなど、プラットフォーム開発者向けの幅広いリソースを提供しています。開発向けのForce.com
プラットフォーム環境も、ここから入手できます。
E
F
項目
テキストまたは通貨の値など、情報の特定の部分を保持するオブジェクトの一部です。
項目レベルセキュリティ
項目が、ユーザに非表示、表示、参照のみ、または編集可能であるかどうかを決定する設定です。Enterprise
Edition、Unlimited Edition、Performance Edition、Developer Edition でのみ使用できます。
Force.com
クラウドでアプリケーションを構築するための Salesforce プラットフォーム。Force.com は、強力なユーザイ
ンターフェース、オペレーティングシステムおよびデータベースを結合して、企業全体でアプリケーショ
ンをカスタマイズおよび展開できます。
G
Group Edition
ユーザ数が制限された小規模ビジネスやワークグループに設計された製品。
H
該当用語はありません。
I
ID
「Salesforce レコード ID」を参照してください。
56
用語集
インスタンス
組織のデータをホストし、アプリケーションを実行する単一の論理サーバとして示されるソフトウェアお
よびハードウェアのクラスタです。Force.comプラットフォームは複数のインスタンスで稼動しますが、1 つ
の組織のデータは常に 1 つのインスタンスに保存されています。
相互関係ログ
ボタンをクリックしたり、新しいタブを参照したり、[メモ & 添付ファイル] 関連リストまでスクロールした
りせずに、作業中の主たるレコードに関するメモをさっと書き込める Salesforce コンソール内の場所。相互
関係ログは、簡単に確認や修正ができるよう、活動履歴関連リストにアーカイブされます。システム管理
者は、相互関係ログをカスタマイズして、ToDo 項目を含めることができます。
J
該当用語はありません。
K
該当用語はありません。
L
ログインユーザ
SOAP APIコンテキストで、Salesforceにログインするために使用するユーザ名です。クライアントアプリケー
ションは、ログインユーザの権限および共有設定に基づいて動作します。また、インテグレーションユー
ザとも呼ばれます。
M
メタデータ
組織および組織のいずれかの部分の構造、外観、機能に関する情報。Force.com では、メタデータを記述す
るのに XML を使用します。
マルチテナンシー
すべてのユーザおよびアプリケーションが単一で共通のインフラストラクチャおよびコードベースを共有
するアプリケーションモデルです。
N
移動タブ
Salesforce コンソールのドロップダウンボタンを持つタブ。オブジェクトのホームページを選択して表示で
きます。
57
用語集
O
オブジェクト
Salesforce 組織に情報を保存するために使用するオブジェクト。オブジェクトは、保存する情報の種類の全
体的な定義です。たとえば、Case オブジェクトを使用して、顧客からの問い合わせに関する情報を保存で
きます。各オブジェクトについて、組織は、そのデータ型の具体的なインスタンスに関する情報を保存す
る複数のレコードを保有します。たとえば、佐藤次郎さんから寄せられたトレーニングに関する問い合わ
せに関する情報を保存するケースレコードと、山田花子さんから寄せられたコンフィグレーションの問題
に関する情報を保存するケースレコードなどです。
組織
ライセンスユーザセットが定義された Salesforce のリリース。組織は、Salesforce の各お客様に提供される仮
想スペースです。組織には、すべてのデータおよびアプリケーションが含まれており、他のすべての組織
から独立しています。
P
Platform Edition
セールスやサービス & サポートなどの標準 Salesforce アプリケーションを含まない Enterprise Edition、Unlimited
Edition、または Performance Edition に基づいた Salesforce エディションです。
主タブ
取引先など、作業する主たる項目を表示する Salesforce コンソールのタブ。
本番組織
実際の本番データとそれらにアクセスするライブユーザを持っている Salesforce 組織です。
Q
該当用語はありません。
R
レコード
Salesforce オブジェクトの単一インスタンス。たとえば、「John Jones」は取引先責任者レコードの名前とな
ります。
S
Salesforce レコード ID
Salesforce の 1 つのレコードを識別する 15 文字または 18 文字の一意の英数字文字列です。
Sandbox
開発、テストおよびトレーニング用の、Salesforce 本番組織とほぼ同一のコピー。Sandbox のコンテンツとサ
イズは、Sandbox の種別および Sandbox に関連付けられた本番組織のエディションによって異なります。
58
用語集
Salesforce コンソール
Salesforce コンソールは、レコードの検索、更新、作成をすばやく行う必要のある、変化の速い環境にある
ユーザ向けに設計されています。レコードと関連項目をタブとして 1 つの画面に表示することによって、
[コンソール] タブのエージェントコンソールを改善したものです。
セッション ID
ユーザが Salesforce に正常にログインした場合に返される認証トークンです。セッション ID を使用すると、
ユーザが Salesforce で別のアクションを実行するときに毎回ログインする必要がなくなります。レコード ID
または Salesforce ID と異なり、Salesforce レコードの一意の ID を示す用語です。
セッションタイムアウト
ログインしてからユーザが自動的にログアウトするまでの時間です。セッションは、前もって決定された
非活動状態の期間の後、自動的に終了します。非活動状態の期間の長さは、[設定] の [セキュリティのコン
トロール] をクリックすることによって Salesforce で設定できます。デフォルト値は 120 分 (2 時間) です。ユー
ザが Web インターフェースでアクションを実行または API コールを実行すると、非活動状態タイマーが 0 に
リセットされます。
SOAP (Simple Object Access Protocol)
XML 符号化データを渡す一定の方法を定義するプロトコル。
ソフトフォン
Salesforce CRM Call Center ユーザに対して、Salesforce ページのサイドバーまたは Salesforce コンソールのフッター
に表示される電話インターフェース。
標準オブジェクト
Force.com プラットフォームに含まれる組み込みオブジェクト。アプリケーション独自の情報を格納するカ
スタムオブジェクトを作成することもできます。
システムログ
開発者コンソールの一部。コードスニペットのデバッグに使用できる独立したウィンドウ。ウィンドウの
下部にテストするコードを入力して、[実行] をクリックします。システムログの本文には、実行する行の
長さや、作成されたデータベースコール数などのシステムリソース情報が表示されます。コードが完了し
なかった場合は、コンソールにデバッグ情報が表示されます。
T
テスト組織
「Sandbox」を参照してください。
トリガ
データベースの特定の種類のレコードが挿入、更新、または削除される前後で実行する Apex の一部です。
各トリガは、トリガが実行されるレコードへのアクセス権限を提供する一連のコンテキスト変数で実行し、
すべてのトリガは一括モードで実行します。つまり、一度に 1 つずつレコードと処理するのではなく、複
数のレコードを一度に処理します。
59
用語集
U
V
バージョン
項目のリリースを示す数値。バージョンを表示できる項目は、API オブジェクト、項目およびコール、Apex
クラスおよびトリガ、Visualforce ページおよびコンポーネントです。
Visualforce
開発者が、プラットフォームに作成されたアプリケーションのカスタムページおよびコンポーネントを容
易に定義できる、タグベースのシンプルなマークアップ言語です。各タグが、ページのセクション、関連
リスト、または項目など、大まかなコンポーネントときめの細かいコンポーネントのどちらにも対応して
います。コンポーネントは、標準の Salesforce ページと同じロジックを使用して制御することができます。
また、開発者が独自のロジックを Apex で記述されたコントローラと関連付けることもできます。
W
Web サービス
様々なプラットフォームで稼動、さまざまな言語で作成、またはお互い地理的に離れている場合であって
も、2 つのアプリケーションがインターネットを経由してデータを容易に交換できるメカニズムです。
Web サービス API
Salesforce組織の情報へのアクセスを提供する Web サービスアプリケーションプログラミングインターフェー
ス。「SOAP API」および「Bulk API」も参照してください。
ラッパークラス
ログイン、セッションの管理、レコードのクエリおよびバッチなど、一般的な機能を抽象化するクラス。
ラッパークラスを使用すると、インテグレーションでより容易にプログラムロジックを開発、保持、およ
び一か所に保存でき、コンポーネント間で容易に再利用できるようになります。Salesforce のラッパークラ
スの例として、Salesforce SOAP API の JavaScript ラッパーである AJAX Toolkit、Salesforce CRM Call Center の CTI Adapter
で使用される CCritical Section などのラッパークラス、または SOAP API を使用して Salesforce にアクセ
スするクライアントインテグレーションアプリケーションの一部として作成されたラッパークラスなどが
あります。
WSDL (Web Services Description Language) ファイル
Web サービスと送受信するメッセージの形式を説明する XML ファイル。開発環境の SOAP クライアントは、
Salesforce Enterprise WSDL または Partner WSDL を使用して、SOAP API で Salesforce と通信します。
X
該当用語はありません。
Y
該当用語はありません。
60
用語集
Z
該当用語はありません。
61